diff --git a/addons/addon-unicode-graphemes/test/UnicodeGraphemesAddon.test.ts b/addons/addon-unicode-graphemes/test/UnicodeGraphemesAddon.test.ts index 2603c056..9bf272ef 100644 --- a/addons/addon-unicode-graphemes/test/UnicodeGraphemesAddon.test.ts +++ b/addons/addon-unicode-graphemes/test/UnicodeGraphemesAddon.test.ts @@ -5,9 +5,7 @@ import test from '@playwright/test'; import { deepStrictEqual, strictEqual } from 'assert'; -import { readFile } from 'fs'; -import { resolve } from 'path'; -import { ITestContext, createTestContext, openTerminal, timeout } from '../../../out-test/playwright/TestUtils'; +import { ITestContext, createTestContext, openTerminal } from '../../../out-test/playwright/TestUtils'; let ctx: ITestContext; test.beforeAll(async ({ browser }) => { @@ -21,9 +19,9 @@ test.describe('UnicodeGraphemesAddon', () => { test.beforeEach(async () => { await ctx.page.evaluate(` window.term.reset() - window.search?.dispose(); - window.search = new SearchAddon(); - window.term.loadAddon(window.search); + window.unicode?.dispose(); + window.unicode = new UnicodeGraphemesAddon(); + window.term.loadAddon(window.unicode); `); }); @@ -32,10 +30,6 @@ test.describe('UnicodeGraphemesAddon', () => { } const ourVersion = '15-graphemes'; test('wcwidth V15 emoji test', async () => { - await ctx.page.evaluate(` - window.unicode = new UnicodeGraphemesAddon(); - window.term.loadAddon(window.unicode); - `); // should have loaded '15-graphemes' deepStrictEqual(await ctx.page.evaluate(`window.term.unicode.versions`), ['6', '15', '15-graphemes']); // switch should not throw diff --git a/addons/addon-unicode11/test/Unicode11Addon.api.ts b/addons/addon-unicode11/test/Unicode11Addon.api.ts deleted file mode 100644 index 83c7a61d..00000000 --- a/addons/addon-unicode11/test/Unicode11Addon.api.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (c) 2019 The xterm.js authors. All rights reserved. - * @license MIT - */ - -import { assert } from 'chai'; -import { openTerminal, launchBrowser } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from '@playwright/test'; - -const APP = 'http://127.0.0.1:3001/test'; - -let browser: Browser; -let page: Page; -const width = 800; -const height = 600; - -describe('Unicode11Addon', () => { - before(async function(): Promise { - browser = await launchBrowser(); - page = await (await browser.newContext()).newPage(); - await page.setViewportSize({ width, height }); - }); - - after(async () => { - await browser.close(); - }); - - beforeEach(async function(): Promise { - await page.goto(APP); - await openTerminal(page); - }); - - it('wcwidth V11 emoji test', async () => { - await page.evaluate(` - window.unicode11 = new Unicode11Addon(); - window.term.loadAddon(window.unicode11); - `); - // should have loaded '11' - assert.deepEqual((await page.evaluate(`window.term.unicode.versions`) as string[]).includes('11'), true); - // switch should not throw - await page.evaluate(`window.term.unicode.activeVersion = '11';`); - assert.deepEqual(await page.evaluate(`window.term.unicode.activeVersion`), '11'); - // v6: 10, V11: 20 - assert.deepEqual(await page.evaluate(`window.term._core.unicodeService.getStringCellWidth('🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣')`), 20); - }); -}); diff --git a/addons/addon-unicode11/test/Unicode11Addon.test.ts b/addons/addon-unicode11/test/Unicode11Addon.test.ts new file mode 100644 index 00000000..4e941c34 --- /dev/null +++ b/addons/addon-unicode11/test/Unicode11Addon.test.ts @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +import test from '@playwright/test'; +import { deepStrictEqual } from 'assert'; +import { ITestContext, createTestContext, openTerminal } from '../../../out-test/playwright/TestUtils'; + +let ctx: ITestContext; +test.beforeAll(async ({ browser }) => { + ctx = await createTestContext(browser); + await openTerminal(ctx); +}); +test.afterAll(async () => await ctx.page.close()); + +test.describe('Unicode11Addon', () => { + + test.beforeEach(async () => { + await ctx.page.evaluate(` + window.term.reset() + window.unicode11?.dispose(); + window.unicode11 = new Unicode11Addon(); + window.term.loadAddon(window.unicode11); + `); + }); + + test('wcwidth V11 emoji test', async () => { + // should have loaded '11' + deepStrictEqual((await ctx.page.evaluate(`window.term.unicode.versions`) as string[]).includes('11'), true); + // switch should not throw + await ctx.page.evaluate(`window.term.unicode.activeVersion = '11';`); + deepStrictEqual(await ctx.page.evaluate(`window.term.unicode.activeVersion`), '11'); + // v6: 10, V11: 20 + deepStrictEqual(await ctx.page.evaluate(`window.term._core.unicodeService.getStringCellWidth('🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣')`), 20); + }); +}); diff --git a/addons/addon-unicode11/test/playwright.config.ts b/addons/addon-unicode11/test/playwright.config.ts new file mode 100644 index 00000000..b0e565c5 --- /dev/null +++ b/addons/addon-unicode11/test/playwright.config.ts @@ -0,0 +1,35 @@ +import { PlaywrightTestConfig } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + testDir: '.', + timeout: 10000, + projects: [ + { + name: 'Chrome Stable', + use: { + browserName: 'chromium', + channel: 'chrome' + } + }, + { + name: 'Firefox Stable', + use: { + browserName: 'firefox' + } + }, + { + name: 'WebKit', + use: { + browserName: 'webkit' + } + } + ], + reporter: 'list', + webServer: { + command: 'npm run start-server-only', + port: 3000, + timeout: 120000, + reuseExistingServer: !process.env.CI + } +}; +export default config; diff --git a/addons/addon-unicode11/test/tsconfig.json b/addons/addon-unicode11/test/tsconfig.json index 0406d3a4..cb6fed28 100644 --- a/addons/addon-unicode11/test/tsconfig.json +++ b/addons/addon-unicode11/test/tsconfig.json @@ -3,24 +3,25 @@ "module": "commonjs", "target": "es2021", "lib": [ - "dom", - "es2015" + "es2021", ], "rootDir": ".", "outDir": "../out-test", "sourceMap": true, "removeComments": true, - "strict": true, "baseUrl": ".", "paths": { "common/*": [ "../../../src/common/*" + ], + "browser/*": [ + "../../../src/browser/*" ] }, + "strict": true, "types": [ - "../../../node_modules/@types/mocha", "../../../node_modules/@types/node", - "../../../out-test/api/TestUtils" + "../../../out-test/playwright/TestUtils" ] }, "include": [ @@ -30,6 +31,9 @@ "references": [ { "path": "../../../src/common" + }, + { + "path": "../../../src/browser" } ] } diff --git a/bin/test_playwright.js b/bin/test_playwright.js index 291d381b..7ba7a8f5 100644 --- a/bin/test_playwright.js +++ b/bin/test_playwright.js @@ -26,6 +26,7 @@ let configs = [ { name: 'addon-search', path: 'addons/addon-search/out-test/playwright.config.js' }, { name: 'addon-serialize', path: 'addons/addon-serialize/out-test/playwright.config.js' }, { name: 'addon-unicode-graphemes', path: 'addons/addon-unicode-graphemes/out-test/playwright.config.js' }, + { name: 'addon-unicode11', path: 'addons/addon-unicode11/out-test/playwright.config.js' }, { name: 'addon-webgl', path: 'addons/addon-webgl/out-test/playwright.config.js' } ];