Remain test/api project
This commit is contained in:
@@ -11,7 +11,6 @@
|
|||||||
"src/browser/tsconfig.json",
|
"src/browser/tsconfig.json",
|
||||||
"src/common/tsconfig.json",
|
"src/common/tsconfig.json",
|
||||||
"src/headless/tsconfig.json",
|
"src/headless/tsconfig.json",
|
||||||
"test/api/tsconfig.json",
|
|
||||||
"test/benchmark/tsconfig.json",
|
"test/benchmark/tsconfig.json",
|
||||||
"test/playwright/tsconfig.json",
|
"test/playwright/tsconfig.json",
|
||||||
"addons/addon-attach/src/tsconfig.json",
|
"addons/addon-attach/src/tsconfig.json",
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
This project contains helpers for the legacy playwright tests. Currently addons use this as a dependency, when all addons have moved over to use `@playright/test` this can be removed.
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
|
|
||||||
import * as playwright from '@playwright/test';
|
|
||||||
import deepEqual = require('deep-equal');
|
|
||||||
import { ITerminalInitOnlyOptions, ITerminalOptions } from '@xterm/xterm';
|
|
||||||
import { deepStrictEqual } from 'assert';
|
|
||||||
|
|
||||||
export async function pollFor<T>(page: playwright.Page, evalOrFn: string | (() => Promise<T>), val: T, preFn?: () => Promise<void>, maxDuration?: number): Promise<void> {
|
|
||||||
if (preFn) {
|
|
||||||
await preFn();
|
|
||||||
}
|
|
||||||
const result = typeof evalOrFn === 'string' ? await page.evaluate(evalOrFn) : await evalOrFn();
|
|
||||||
|
|
||||||
if (process.env.DEBUG) {
|
|
||||||
console.log('pollFor result: ', result);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!deepEqual(result, val)) {
|
|
||||||
if (maxDuration === undefined) {
|
|
||||||
maxDuration = 2000;
|
|
||||||
}
|
|
||||||
if (maxDuration <= 0) {
|
|
||||||
deepStrictEqual(result, val, 'pollFor max duration exceeded');
|
|
||||||
}
|
|
||||||
return new Promise<void>(r => {
|
|
||||||
setTimeout(() => r(pollFor(page, evalOrFn, val, preFn, maxDuration! - 10)), 10);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function writeSync(page: playwright.Page, data: string): Promise<void> {
|
|
||||||
await page.evaluate(`
|
|
||||||
window.ready = false;
|
|
||||||
window.term.write('${data}', () => window.ready = true);
|
|
||||||
`);
|
|
||||||
await pollFor(page, 'window.ready', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function timeout(ms: number): Promise<void> {
|
|
||||||
return new Promise<void>(r => setTimeout(r, ms));
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function openTerminal(page: playwright.Page, options: ITerminalOptions & ITerminalInitOnlyOptions = {}, testOptions: { loadUnicodeGraphemesAddon: boolean } = { loadUnicodeGraphemesAddon: true }): Promise<void> {
|
|
||||||
await page.evaluate(`window.term = new Terminal(${JSON.stringify({ allowProposedApi: true, ...options })})`);
|
|
||||||
await page.evaluate(`window.term.open(document.querySelector('#terminal-container'))`);
|
|
||||||
|
|
||||||
// HACK: This is a soft layer breaker that's temporarily included until unicode graphemes have
|
|
||||||
// more complete integration tests. See https://github.com/xtermjs/xterm.js/pull/4519#discussion_r1285234453
|
|
||||||
if (testOptions.loadUnicodeGraphemesAddon) {
|
|
||||||
await page.evaluate(`
|
|
||||||
window.unicode = new UnicodeGraphemesAddon();
|
|
||||||
window.term.loadAddon(window.unicode);
|
|
||||||
window.term.unicode.activeVersion = '15-graphemes';
|
|
||||||
`);
|
|
||||||
}
|
|
||||||
await page.waitForSelector('.xterm-rows');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getBrowserType(): playwright.BrowserType<playwright.WebKitBrowser> | playwright.BrowserType<playwright.ChromiumBrowser> | playwright.BrowserType<playwright.FirefoxBrowser> {
|
|
||||||
// Default to chromium
|
|
||||||
let browserType: playwright.BrowserType<playwright.WebKitBrowser> | playwright.BrowserType<playwright.ChromiumBrowser> | playwright.BrowserType<playwright.FirefoxBrowser> = playwright['chromium'];
|
|
||||||
|
|
||||||
const index = process.argv.indexOf('--browser');
|
|
||||||
if (index !== -1 && process.argv.length > index + 1 && typeof process.argv[index + 1] === 'string') {
|
|
||||||
const string = process.argv[index + 1];
|
|
||||||
if (string === 'firefox' || string === 'webkit') {
|
|
||||||
browserType = playwright[string];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return browserType;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function launchBrowser(opts?: playwright.LaunchOptions): Promise<playwright.Browser> {
|
|
||||||
const browserType = getBrowserType();
|
|
||||||
const options: playwright.LaunchOptions = {
|
|
||||||
...opts,
|
|
||||||
headless: process.argv.includes('--headless')
|
|
||||||
};
|
|
||||||
|
|
||||||
const index = process.argv.indexOf('--executablePath');
|
|
||||||
if (index > 0 && process.argv.length > index + 1 && typeof process.argv[index + 1] === 'string') {
|
|
||||||
options.executablePath = process.argv[index + 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
return browserType.launch(options);
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"lib": [
|
|
||||||
"dom",
|
|
||||||
"es2021"
|
|
||||||
],
|
|
||||||
"rootDir": ".",
|
|
||||||
"outDir": "../../out-test/api",
|
|
||||||
"types": [
|
|
||||||
"../../node_modules/@types/mocha",
|
|
||||||
"../../node_modules/@types/node"
|
|
||||||
],
|
|
||||||
"sourceMap": true,
|
|
||||||
"removeComments": true,
|
|
||||||
"pretty": true,
|
|
||||||
"strict": true,
|
|
||||||
"declaration": true,
|
|
||||||
"baseUrl": ".",
|
|
||||||
"paths": {
|
|
||||||
"browser/*": [
|
|
||||||
"../../src/browser/*"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"include": [
|
|
||||||
"./**/*",
|
|
||||||
"../../typings/xterm.d.ts"
|
|
||||||
],
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"path": "../../src/browser"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
"references": [
|
"references": [
|
||||||
{ "path": "./src/browser" },
|
{ "path": "./src/browser" },
|
||||||
{ "path": "./src/headless" },
|
{ "path": "./src/headless" },
|
||||||
{ "path": "./test/api" },
|
|
||||||
{ "path": "./test/benchmark" },
|
{ "path": "./test/benchmark" },
|
||||||
{ "path": "./test/playwright" },
|
{ "path": "./test/playwright" },
|
||||||
{ "path": "./addons/addon-attach" },
|
{ "path": "./addons/addon-attach" },
|
||||||
|
|||||||
Reference in New Issue
Block a user