mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-07-25 16:45:00 +02:00
* enhance(frontend/test): frontend e2eをVitest Browser Modeに移行
* fix
* fix unit tests
* fix
* fix
* update playwright
* fix
* fix
* fix
* fix
* fix
* fix
* fix
* fix
* perf
* Revert "perf"
This reverts commit e60e965c3c.
* fix
99 lines
2.2 KiB
TypeScript
99 lines
2.2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { vi } from 'vitest';
|
|
import createFetchMock from 'vitest-fetch-mock';
|
|
import type { Ref } from 'vue';
|
|
import { ref } from 'vue';
|
|
|
|
const fetchMocker = createFetchMock(vi);
|
|
fetchMocker.enableMocks();
|
|
|
|
// XXX: misskey-js panics if WebSocket is not defined
|
|
vi.stubGlobal('WebSocket', class WebSocket extends EventTarget { static CLOSING = 2; });
|
|
|
|
// XXX: localStorageがない場合がある
|
|
const localStorageMock = (() => {
|
|
const store = new Map<string, string>();
|
|
return {
|
|
getItem(key: string) {
|
|
return store.get(key) ?? null;
|
|
},
|
|
setItem(key: string, value: string) {
|
|
store.set(key, value);
|
|
},
|
|
removeItem(key: string) {
|
|
store.delete(key);
|
|
},
|
|
clear() {
|
|
store.clear();
|
|
},
|
|
};
|
|
})();
|
|
vi.stubGlobal('localStorage', localStorageMock);
|
|
|
|
// 中でlocalStorageを使うので上と順番を変えてはいけない
|
|
const { default: locales } = await import('i18n');
|
|
|
|
fetchMocker.mockIf(/^\/assets\/locales\/.*\.json$/, async () => {
|
|
return {
|
|
status: 200,
|
|
body: JSON.stringify(locales['en-US']),
|
|
};
|
|
});
|
|
|
|
const { updateI18n } = await import('@/i18n.js');
|
|
updateI18n(locales['en-US']);
|
|
|
|
export const preferState: Record<string, unknown> = {
|
|
|
|
// なんかtestがうまいこと動かないのでここに書く
|
|
dataSaver: {
|
|
media: false,
|
|
avatar: false,
|
|
urlPreview: false,
|
|
code: false,
|
|
},
|
|
|
|
mutingEmojis: [],
|
|
};
|
|
|
|
export let preferReactive: Record<string, Ref<unknown>> = {};
|
|
|
|
for (const key in preferState) {
|
|
if (preferState[key] !== undefined) {
|
|
preferReactive[key] = ref(preferState[key]);
|
|
}
|
|
}
|
|
|
|
// XXX: store somehow becomes undefined in vitest?
|
|
vi.mock('@/preferences.js', () => {
|
|
|
|
return {
|
|
prefer: {
|
|
s: preferState,
|
|
r: preferReactive,
|
|
},
|
|
};
|
|
});
|
|
|
|
// Add mocks for Web Audio API
|
|
const AudioNodeMock = vi.fn(() => ({
|
|
connect: vi.fn(() => ({ connect: vi.fn() })),
|
|
start: vi.fn(),
|
|
}));
|
|
|
|
const GainNodeMock = vi.fn(() => ({
|
|
gain: vi.fn(),
|
|
}));
|
|
|
|
const AudioContextMock = vi.fn(() => ({
|
|
createBufferSource: vi.fn(() => new AudioNodeMock()),
|
|
createGain: vi.fn(() => new GainNodeMock()),
|
|
decodeAudioData: vi.fn(),
|
|
}));
|
|
|
|
vi.stubGlobal('AudioContext', AudioContextMock);
|