From 27c87319c18ae3619cd2d3dca06f8a223dbb59f7 Mon Sep 17 00:00:00 2001 From: Bruno Ribeiro Date: Tue, 6 Apr 2021 15:48:48 +0100 Subject: [PATCH 1/3] Fix #2714 - Start demo server before running integration tests - Use port 3001 instead of 300 to not conflict with the demo --- addons/xterm-addon-attach/test/AttachAddon.api.ts | 2 +- addons/xterm-addon-fit/test/FitAddon.api.ts | 2 +- addons/xterm-addon-search/test/SearchAddon.api.ts | 2 +- addons/xterm-addon-serialize/test/SerializeAddon.api.ts | 2 +- addons/xterm-addon-unicode11/test/Unicode11Addon.api.ts | 2 +- addons/xterm-addon-web-links/test/WebLinksAddon.api.ts | 2 +- addons/xterm-addon-webgl/test/WebglRenderer.api.ts | 2 +- bin/test_api.js | 7 +++++++ test/api/CharWidth.api.ts | 2 +- test/api/InputHandler.api.ts | 2 +- test/api/MouseTracking.api.ts | 2 +- test/api/Parser.api.ts | 2 +- test/api/Terminal.api.ts | 2 +- 13 files changed, 19 insertions(+), 12 deletions(-) diff --git a/addons/xterm-addon-attach/test/AttachAddon.api.ts b/addons/xterm-addon-attach/test/AttachAddon.api.ts index 2dea645f..ef26cfd2 100644 --- a/addons/xterm-addon-attach/test/AttachAddon.api.ts +++ b/addons/xterm-addon-attach/test/AttachAddon.api.ts @@ -7,7 +7,7 @@ import WebSocket = require('ws'); import { openTerminal, pollFor, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-fit/test/FitAddon.api.ts b/addons/xterm-addon-fit/test/FitAddon.api.ts index 5a5b3264..8859b5a6 100644 --- a/addons/xterm-addon-fit/test/FitAddon.api.ts +++ b/addons/xterm-addon-fit/test/FitAddon.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { openTerminal, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-search/test/SearchAddon.api.ts b/addons/xterm-addon-search/test/SearchAddon.api.ts index b92dbc3a..3c94d416 100644 --- a/addons/xterm-addon-search/test/SearchAddon.api.ts +++ b/addons/xterm-addon-search/test/SearchAddon.api.ts @@ -9,7 +9,7 @@ import { resolve } from 'path'; import { openTerminal, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-serialize/test/SerializeAddon.api.ts b/addons/xterm-addon-serialize/test/SerializeAddon.api.ts index d472d753..a7b3b816 100644 --- a/addons/xterm-addon-serialize/test/SerializeAddon.api.ts +++ b/addons/xterm-addon-serialize/test/SerializeAddon.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { openTerminal, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-unicode11/test/Unicode11Addon.api.ts b/addons/xterm-addon-unicode11/test/Unicode11Addon.api.ts index 7369eeaa..ba536e90 100644 --- a/addons/xterm-addon-unicode11/test/Unicode11Addon.api.ts +++ b/addons/xterm-addon-unicode11/test/Unicode11Addon.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { openTerminal, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-web-links/test/WebLinksAddon.api.ts b/addons/xterm-addon-web-links/test/WebLinksAddon.api.ts index 47fd7911..54650f1f 100644 --- a/addons/xterm-addon-web-links/test/WebLinksAddon.api.ts +++ b/addons/xterm-addon-web-links/test/WebLinksAddon.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { openTerminal, pollFor, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/addons/xterm-addon-webgl/test/WebglRenderer.api.ts b/addons/xterm-addon-webgl/test/WebglRenderer.api.ts index e0aa68e7..1722e570 100644 --- a/addons/xterm-addon-webgl/test/WebglRenderer.api.ts +++ b/addons/xterm-addon-webgl/test/WebglRenderer.api.ts @@ -9,7 +9,7 @@ import { assert } from 'chai'; import { openTerminal, pollFor, writeSync, getBrowserType } from '../../../out-test/api/TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/bin/test_api.js b/bin/test_api.js index 7afb34bc..6aee0e50 100644 --- a/bin/test_api.js +++ b/bin/test_api.js @@ -34,6 +34,13 @@ if (process.argv.length > 2) { env.DEBUG = flagArgs.indexOf('--debug') >= 0 ? 'debug' : ''; +env.PORT = 3001; + +const server = cp.spawn('node', ['demo/start'], { + cwd: path.resolve(__dirname, '..'), + env, + stdio: 'inherit' +}) const run = cp.spawnSync( npmBinScript('mocha'), diff --git a/test/api/CharWidth.api.ts b/test/api/CharWidth.api.ts index 01d69861..d7cea109 100644 --- a/test/api/CharWidth.api.ts +++ b/test/api/CharWidth.api.ts @@ -6,7 +6,7 @@ import { pollFor, openTerminal, getBrowserType } from './TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/test/api/InputHandler.api.ts b/test/api/InputHandler.api.ts index 16ab2301..a695abdc 100644 --- a/test/api/InputHandler.api.ts +++ b/test/api/InputHandler.api.ts @@ -8,7 +8,7 @@ import { pollFor, openTerminal, getBrowserType } from './TestUtils'; import { Browser, Page } from 'playwright'; import { IRenderDimensions } from 'browser/renderer/Types'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/test/api/MouseTracking.api.ts b/test/api/MouseTracking.api.ts index 0bd0cc18..3df21a90 100644 --- a/test/api/MouseTracking.api.ts +++ b/test/api/MouseTracking.api.ts @@ -6,7 +6,7 @@ import { pollFor, writeSync, openTerminal, getBrowserType } from './TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/test/api/Parser.api.ts b/test/api/Parser.api.ts index 7bd55544..0ef57cf1 100644 --- a/test/api/Parser.api.ts +++ b/test/api/Parser.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { writeSync, openTerminal, getBrowserType } from './TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; diff --git a/test/api/Terminal.api.ts b/test/api/Terminal.api.ts index 2f388deb..39ca1a3b 100644 --- a/test/api/Terminal.api.ts +++ b/test/api/Terminal.api.ts @@ -7,7 +7,7 @@ import { assert } from 'chai'; import { pollFor, timeout, writeSync, openTerminal, getBrowserType } from './TestUtils'; import { Browser, Page } from 'playwright'; -const APP = 'http://127.0.0.1:3000/test'; +const APP = 'http://127.0.0.1:3001/test'; let browser: Browser; let page: Page; From ab659fda5f02c17c184e49b82cb4876b8f33886a Mon Sep 17 00:00:00 2001 From: Bruno Ribeiro Date: Tue, 6 Apr 2021 16:51:17 +0100 Subject: [PATCH 2/3] Remove Start Test Server from pipelines as it now starts in the tests --- azure-pipelines.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4b2c5f73..98fff711 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -100,10 +100,6 @@ jobs: displayName: 'Install Yarn' - script: yarn --frozen-lockfile displayName: 'Install dependencies and build' - - script: | - yarn start & - sleep 10 - displayName: 'Start test server' - script: yarn test-api-chromium --headless --forbid-only displayName: 'Integration tests (Chromium)' - script: xvfb-run --auto-servernum -- bash -c "yarn test-api-firefox --headless --forbid-only" @@ -119,10 +115,6 @@ jobs: displayName: 'Install Node.js' - script: yarn --frozen-lockfile displayName: 'Install dependencies and build' - - script: | - yarn start & - sleep 10 - displayName: 'Start test server' - script: yarn test-api-chromium --headless --forbid-only displayName: 'Integration tests (Chromium)' - script: yarn test-api-firefox --headless --forbid-only From b8af0ecf05d53b3174a423db9564770a17014155 Mon Sep 17 00:00:00 2001 From: Bruno Ribeiro Date: Tue, 6 Apr 2021 17:21:39 +0100 Subject: [PATCH 3/3] Await for server to be fully started --- bin/test_api.js | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/bin/test_api.js b/bin/test_api.js index 6aee0e50..9fe4659a 100644 --- a/bin/test_api.js +++ b/bin/test_api.js @@ -39,21 +39,26 @@ env.PORT = 3001; const server = cp.spawn('node', ['demo/start'], { cwd: path.resolve(__dirname, '..'), env, - stdio: 'inherit' + stdio: 'pipe' }) -const run = cp.spawnSync( - npmBinScript('mocha'), - [...testFiles, ...flagArgs], - { - cwd: path.resolve(__dirname, '..'), - env, - stdio: 'inherit' +server.stdout.on('data', (data) => { + // await for the server to fully start + if (data.indexOf("successfully") !== -1) { + const run = cp.spawnSync( + npmBinScript('mocha'), + [...testFiles, ...flagArgs], { + cwd: path.resolve(__dirname, '..'), + env, + stdio: 'inherit' + } + ); + + function npmBinScript(script) { + return path.resolve(__dirname, `../node_modules/.bin/` + (process.platform === 'win32' ? + `${script}.cmd` : script)); + } + + process.exit(run.status); } -); - -function npmBinScript(script) { - return path.resolve(__dirname, `../node_modules/.bin/` + (process.platform === 'win32' ? `${script}.cmd` : script)); -} - -process.exit(run.status); +});