diff --git a/addons/xterm-addon-attach/src/AttachAddon.api.ts b/addons/xterm-addon-attach/src/AttachAddon.api.ts index 065c1940..fdef5c41 100644 --- a/addons/xterm-addon-attach/src/AttachAddon.api.ts +++ b/addons/xterm-addon-attach/src/AttachAddon.api.ts @@ -5,7 +5,7 @@ import WebSocket = require('ws'); import { openTerminal, pollFor, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('AttachAddon', () => { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/addons/xterm-addon-fit/src/FitAddon.api.ts b/addons/xterm-addon-fit/src/FitAddon.api.ts index 33a0e6fd..f154a30e 100644 --- a/addons/xterm-addon-fit/src/FitAddon.api.ts +++ b/addons/xterm-addon-fit/src/FitAddon.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { openTerminal, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -18,7 +18,8 @@ let isFirefox = false; describe('FitAddon', () => { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/addons/xterm-addon-search/src/SearchAddon.api.ts b/addons/xterm-addon-search/src/SearchAddon.api.ts index 21e9d04b..741ddea2 100644 --- a/addons/xterm-addon-search/src/SearchAddon.api.ts +++ b/addons/xterm-addon-search/src/SearchAddon.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { readFile } from 'fs'; import { resolve } from 'path'; import { openTerminal, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -18,7 +18,8 @@ const height = 600; describe('Search Tests', function(): void { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/addons/xterm-addon-serialize/src/SerializeAddon.api.ts b/addons/xterm-addon-serialize/src/SerializeAddon.api.ts index 072804f2..992f9351 100644 --- a/addons/xterm-addon-serialize/src/SerializeAddon.api.ts +++ b/addons/xterm-addon-serialize/src/SerializeAddon.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { openTerminal, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('SerializeAddon', () => { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`] }); diff --git a/addons/xterm-addon-unicode11/src/Unicode11Addon.api.ts b/addons/xterm-addon-unicode11/src/Unicode11Addon.api.ts index cf12dae1..5729751a 100644 --- a/addons/xterm-addon-unicode11/src/Unicode11Addon.api.ts +++ b/addons/xterm-addon-unicode11/src/Unicode11Addon.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { openTerminal, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('Unicode11Addon', () => { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/addons/xterm-addon-web-links/src/WebLinksAddon.api.ts b/addons/xterm-addon-web-links/src/WebLinksAddon.api.ts index 16789233..219e7490 100644 --- a/addons/xterm-addon-web-links/src/WebLinksAddon.api.ts +++ b/addons/xterm-addon-web-links/src/WebLinksAddon.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { openTerminal, pollFor, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('WebLinksAddon', () => { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/addons/xterm-addon-webgl/src/WebglRenderer.api.ts b/addons/xterm-addon-webgl/src/WebglRenderer.api.ts index c3e27c7d..a170132a 100644 --- a/addons/xterm-addon-webgl/src/WebglRenderer.api.ts +++ b/addons/xterm-addon-webgl/src/WebglRenderer.api.ts @@ -7,7 +7,7 @@ import { ITerminalOptions } from '../../../src/Types'; import { ITheme } from 'xterm'; import { assert } from 'chai'; import { openTerminal, pollFor, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; -import { Browser, Page, BrowserType } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -18,8 +18,8 @@ const height = 600; let itWebgl: (expectation: string, callback?: (this: Mocha.ITestCallbackContext, done: MochaDone) => any) => Mocha.ITest | void; -describe('WebGL Renderer Integration Tests', function(): void { - const browserType = getBrowserType(); +describe('WebGL Renderer Integration Tests', async () => { + const browserType = await getBrowserType(); const isHeadless = process.argv.indexOf('--headless') !== -1; // Firefox works only in non-headless mode https://github.com/microsoft/playwright/issues/1032 const areTestsEnabled = browserType.name() === 'chromium' || (browserType.name() === 'firefox' && !isHeadless); @@ -898,7 +898,8 @@ async function getCellColor(col: number, row: number): Promise { } async function setupBrowser(options: ITerminalOptions = { rendererType: 'dom' }): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/package.json b/package.json index ec33abce..0946688f 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "mustache": "^3.0.1", "node-pty": "^0.9.0", "nyc": "13", - "playwright": "0.11.1", "source-map-loader": "^0.2.4", "ts-loader": "^6.0.4", "tslint": "^5.18.0", @@ -64,5 +63,8 @@ "webpack-cli": "^3.1.0", "ws": "^7.0.0", "xterm-benchmark": "^0.1.3" + }, + "dependencies": { + "playwright-core": "^0.11.1" } } diff --git a/test/api/CharWidth.api.ts b/test/api/CharWidth.api.ts index 1fe8a34d..26cf488e 100644 --- a/test/api/CharWidth.api.ts +++ b/test/api/CharWidth.api.ts @@ -4,7 +4,7 @@ */ import { pollFor, openTerminal, getBrowserType } from './TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -15,7 +15,8 @@ const height = 600; describe('CharWidth Integration Tests', function(): void { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/test/api/InputHandler.api.ts b/test/api/InputHandler.api.ts index a4d3f82f..881a2e35 100644 --- a/test/api/InputHandler.api.ts +++ b/test/api/InputHandler.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { pollFor, openTerminal, getBrowserType } from './TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; import { IRenderDimensions } from 'browser/renderer/Types'; const APP = 'http://127.0.0.1:3000/test'; @@ -19,7 +19,7 @@ let isChromium = false; describe('InputHandler Integration Tests', function(): void { before(async function(): Promise { - const browserType = getBrowserType(); + const browserType = await getBrowserType(); isChromium = browserType.name() === 'chromium'; browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, diff --git a/test/api/MouseTracking.api.ts b/test/api/MouseTracking.api.ts index 27283c19..4867902e 100644 --- a/test/api/MouseTracking.api.ts +++ b/test/api/MouseTracking.api.ts @@ -4,7 +4,7 @@ */ import { pollFor, writeSync, openTerminal, getBrowserType } from './TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -22,8 +22,7 @@ const cols = 260; const rows = 50; // Wheel events are hacked using private API that is only available in Chromium -const isChromium = getBrowserType().name() === 'chromium'; -const itMouse = isChromium ? it : it.skip; +const isChromium = false // for some reason shift gets not caught by selection manager on macos const noShift = process.platform === 'darwin' ? false : true; @@ -208,9 +207,13 @@ function parseReport(encoding: string, msg: number[]): { state: any; row: number /** * Mouse tracking tests. */ -describe('Mouse Tracking Tests', () => { +describe('Mouse Tracking Tests', async () => { + const browserType = await getBrowserType(); + browserType.name() === 'chromium'; + const itMouse = isChromium ? it : it.skip; + before(async function(): Promise { - browser = await getBrowserType().launch({ + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/test/api/Parser.api.ts b/test/api/Parser.api.ts index 5ac287a5..07b677ab 100644 --- a/test/api/Parser.api.ts +++ b/test/api/Parser.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { writeSync, openTerminal, getBrowserType } from './TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('Parser Integration Tests', function(): void { before(async function(): Promise { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/test/api/Terminal.api.ts b/test/api/Terminal.api.ts index 188a6f7c..00eba4bb 100644 --- a/test/api/Terminal.api.ts +++ b/test/api/Terminal.api.ts @@ -5,7 +5,7 @@ import { assert } from 'chai'; import { pollFor, timeout, writeSync, openTerminal, getBrowserType } from './TestUtils'; -import { Browser, Page } from 'playwright'; +import { Browser, Page } from 'playwright-core'; const APP = 'http://127.0.0.1:3000/test'; @@ -16,7 +16,8 @@ const height = 600; describe('API Integration Tests', function(): void { before(async () => { - browser = await getBrowserType().launch({ + const browserType = await getBrowserType(); + browser = await browserType.launch({ headless: process.argv.indexOf('--headless') !== -1, args: [`--window-size=${width},${height}`, `--no-sandbox`] }); diff --git a/test/api/TestUtils.ts b/test/api/TestUtils.ts index a78dab44..7bad9b8f 100644 --- a/test/api/TestUtils.ts +++ b/test/api/TestUtils.ts @@ -3,7 +3,7 @@ * @license MIT */ -import * as playwright from 'playwright'; +import * as playwright from 'playwright-core'; import deepEqual = require('deep-equal'); import { ITerminalOptions } from 'xterm'; @@ -41,7 +41,7 @@ export async function openTerminal(page: playwright.Page, options: ITerminalOpti } } -export function getBrowserType(): playwright.BrowserType { +export async function getBrowserType(): Promise { // Default to chromium let browserType: playwright.BrowserType = playwright['chromium']; @@ -53,5 +53,7 @@ export function getBrowserType(): playwright.BrowserType { } } + await browserType.downloadBrowserIfNeeded(); + return browserType; } diff --git a/yarn.lock b/yarn.lock index 74c94d43..c11f1acb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4026,7 +4026,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -playwright-core@=0.11.1: +playwright-core@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-0.11.1.tgz#b488ad17015a4d0f54db5a5fb6a9d380afea6d5a" integrity sha512-9xsSkXlglvHIAofyNInA1p3beOAOBMWHZgiuH99gX1R8VL6fTXgfWD7pIvt+rJhVMJWMDAyMXRo4TYtYtdspIg== @@ -4042,13 +4042,6 @@ playwright-core@=0.11.1: uuid "^3.4.0" ws "^6.1.0" -playwright@0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-0.11.1.tgz#e35a2a67d87fdc497a3f706596ea40822f373e82" - integrity sha512-Sx/WCb88u6Q73klQKGjGY2PJSbUl7JAHIie3mFGTpXPPo79cmMzVJl2e07v/qO3VGFd13bF4z8vMt2UVPc/ygQ== - dependencies: - playwright-core "=0.11.1" - pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"