1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-07-25 19:05:03 +02:00
Files
misskey/packages/frontend/test/setup.unit.ts
かっこかり 9472e72678 enhance(frontend/test): frontend e2eをPlaywrightに移行 (#17682)
* 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
2026-07-08 20:58:02 +09:00

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);