diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/core.test.js | 12 | ||||
-rw-r--r-- | test/fixtures/dom-test.js | 11 | ||||
-rw-r--r-- | test/hotkey-util.test.js | 2 | ||||
-rw-r--r-- | test/json-schema.test.js | 18 | ||||
-rw-r--r-- | test/playwright/playwright-util.js | 57 |
5 files changed, 62 insertions, 38 deletions
diff --git a/test/core.test.js b/test/core.test.js index 0ddcc2d1..7e19d04d 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -269,8 +269,16 @@ function testDeepEqual() { /** @type {import('test/core').DeepEqualTestData} */ const recursiveTestsData = [ { - value1: (() => { const x = {}; x.x = x; return x; })(), - value2: (() => { const x = {}; x.x = x; return x; })(), + value1: (() => { + const x = {}; + x.x = x; + return x; + })(), + value2: (() => { + const x = {}; + x.x = x; + return x; + })(), expected: false } ]; diff --git a/test/fixtures/dom-test.js b/test/fixtures/dom-test.js index a0a17127..578b1324 100644 --- a/test/fixtures/dom-test.js +++ b/test/fixtures/dom-test.js @@ -43,10 +43,13 @@ function prepareWindow(window) { export async function setupDomTest(htmlFilePath) { const html = typeof htmlFilePath === 'string' ? fs.readFileSync(htmlFilePath, {encoding: 'utf8'}) : '<!DOCTYPE html>'; const env = builtinEnvironments.jsdom; - const {teardown} = await env.setup(global, {jsdom: {html}}); + const environment = await env.setup(global, {jsdom: {html}}); const window = /** @type {import('jsdom').DOMWindow} */ (/** @type {unknown} */ (global.window)); prepareWindow(window); - return {window, teardown}; + return { + window, + teardown: (global) => environment.teardown(global) + }; } /** @@ -59,13 +62,13 @@ export function createDomTest(htmlFilePath) { // eslint-disable-next-line no-empty-pattern window: async ({}, use) => { const env = builtinEnvironments.jsdom; - const {teardown} = await env.setup(global, {jsdom: {html}}); + const environment = await env.setup(global, {jsdom: {html}}); const window = /** @type {import('jsdom').DOMWindow} */ (/** @type {unknown} */ (global.window)); prepareWindow(window); try { await use(window); } finally { - teardown(global); + environment.teardown(global); } } }); diff --git a/test/hotkey-util.test.js b/test/hotkey-util.test.js index bf1124a5..01a2b536 100644 --- a/test/hotkey-util.test.js +++ b/test/hotkey-util.test.js @@ -160,7 +160,7 @@ function testSortModifiers() { const hotkeyUtil = new HotkeyUtil(); for (const {modifiers, expected} of data) { - test(`[${modifiers}] -> [${expected}]`, () => { + test(`[${modifiers.join(',')}] -> [${expected.join(',')}]`, () => { const modifiers2 = hotkeyUtil.sortModifiers(modifiers); expect(modifiers2).toStrictEqual(modifiers); expect(modifiers2).toStrictEqual(expected); diff --git a/test/json-schema.test.js b/test/json-schema.test.js index ab2c0c65..af4b7acd 100644 --- a/test/json-schema.test.js +++ b/test/json-schema.test.js @@ -520,7 +520,7 @@ function testValidate2() { /* eslint-enable @stylistic/no-multi-spaces */ describe.each(data)('Schema %#', ({schema, inputs}) => { - test.each(inputs)(`schemaValidate(${schema}, $value) -> $expected`, ({expected, value}) => { + test.each(inputs)(`schemaValidate(${JSON.stringify(schema)}, $value) -> $expected`, ({expected, value}) => { const actual = schemaValidate(schema, value); expect(actual).toStrictEqual(expected); }); @@ -878,7 +878,7 @@ function testGetValidValueOrDefault1() { ]; describe.each(data)('Schema %#', ({schema, inputs}) => { - test.each(inputs)(`getValidValueOrDefault(${schema}, %o) -> %o`, (value, expected) => { + test.each(inputs)(`getValidValueOrDefault(${JSON.stringify(schema)}, %o) -> %o`, (value, expected) => { const actual = getValidValueOrDefault(schema, value); expect(actual).toStrictEqual(expected); }); @@ -985,11 +985,15 @@ function testProxy1() { {error: true, value: ['default'], action: (value) => { value[0] = null; }}, {error: false, value: ['default'], action: (value) => { delete value[0]; }}, {error: false, value: ['default'], action: (value) => { value[1] = 'string'; }}, - {error: false, value: ['default'], action: (value) => { - value[1] = 'string'; - if (value.length !== 2) { throw new Error(`Invalid length; expected=2; actual=${value.length}`); } - if (typeof value.push !== 'function') { throw new Error(`Invalid push; expected=function; actual=${typeof value.push}`); } - }} + { + error: false, + value: ['default'], + action: (value) => { + value[1] = 'string'; + if (value.length !== 2) { throw new Error(`Invalid length; expected=2; actual=${value.length}`); } + if (typeof value.push !== 'function') { throw new Error(`Invalid push; expected=function; actual=${typeof value.push}`); } + } + } ] }, diff --git a/test/playwright/playwright-util.js b/test/playwright/playwright-util.js index bf171251..b364c80b 100644 --- a/test/playwright/playwright-util.js +++ b/test/playwright/playwright-util.js @@ -20,6 +20,7 @@ import path from 'path'; import {fileURLToPath} from 'url'; const dirname = path.dirname(fileURLToPath(import.meta.url)); + export const root = path.join(dirname, '..', '..'); export const test = base.extend({ @@ -47,6 +48,7 @@ export const test = base.extend({ await use(extensionId); } }); + export const expect = test.expect; export const mockModelFieldNames = [ @@ -58,10 +60,10 @@ export const mockModelFieldNames = [ /** @type {{[key: string]: string|undefined}} */ export const mockModelFieldsToAnkiValues = { - 'Word': '{expression}', - 'Reading': '{furigana-plain}', - 'Sentence': '{clipboard-text}', - 'Audio': '{audio}' + Word: '{expression}', + Reading: '{furigana-plain}', + Sentence: '{clipboard-text}', + Audio: '{audio}' }; /** @@ -87,23 +89,30 @@ export const writeToClipboardFromPage = async (page, text) => { }; export const expectedAddNoteBody = { - 'action': 'addNote', - 'params': - { - 'note': { - 'fields': { - 'Word': '読む', 'Reading': '読[よ]む', 'Audio': '[sound:mock_audio.mp3]', 'Sentence': '読むの例文' + version: 2, + action: 'addNote', + params: { + note: { + fields: { + Word: '読む', + Reading: '読[よ]む', + Audio: '[sound:mock_audio.mp3]', + Sentence: '読むの例文' }, - 'tags': ['yomitan'], - 'deckName': 'Mock Deck', - 'modelName': 'Mock Model', - 'options': { - 'allowDuplicate': false, 'duplicateScope': 'collection', 'duplicateScopeOptions': { - 'deckName': null, 'checkChildren': false, 'checkAllModels': false + tags: ['yomitan'], + deckName: 'Mock Deck', + modelName: 'Mock Model', + options: { + allowDuplicate: false, + duplicateScope: 'collection', + duplicateScopeOptions: { + deckName: null, + checkChildren: false, + checkAllModels: false } } } - }, 'version': 2 + } }; const baseAnkiResp = { @@ -113,11 +122,11 @@ const baseAnkiResp = { /** @type {{[key: string]: import('core').SerializableObject}} */ const ankiRouteResponses = { - 'version': Object.assign({body: JSON.stringify(6)}, baseAnkiResp), - 'deckNames': Object.assign({body: JSON.stringify(['Mock Deck'])}, baseAnkiResp), - 'modelNames': Object.assign({body: JSON.stringify(['Mock Model'])}, baseAnkiResp), - 'modelFieldNames': Object.assign({body: JSON.stringify(mockModelFieldNames)}, baseAnkiResp), - 'canAddNotes': Object.assign({body: JSON.stringify([true, true])}, baseAnkiResp), - 'storeMediaFile': Object.assign({body: JSON.stringify('mock_audio.mp3')}, baseAnkiResp), - 'addNote': Object.assign({body: JSON.stringify(102312488912)}, baseAnkiResp) + version: Object.assign({body: JSON.stringify(6)}, baseAnkiResp), + deckNames: Object.assign({body: JSON.stringify(['Mock Deck'])}, baseAnkiResp), + modelNames: Object.assign({body: JSON.stringify(['Mock Model'])}, baseAnkiResp), + modelFieldNames: Object.assign({body: JSON.stringify(mockModelFieldNames)}, baseAnkiResp), + canAddNotes: Object.assign({body: JSON.stringify([true, true])}, baseAnkiResp), + storeMediaFile: Object.assign({body: JSON.stringify('mock_audio.mp3')}, baseAnkiResp), + addNote: Object.assign({body: JSON.stringify(102312488912)}, baseAnkiResp) }; |