diff --git a/bin/test.js b/bin/test.js index 1380a512..e19a2ad9 100644 --- a/bin/test.js +++ b/bin/test.js @@ -51,6 +51,16 @@ if (checkCoverage) { process.exit(run.status); } +const checkDebug = flagArgs.indexOf('--debug') >= 0; + +if (checkDebug) { + env.DEBUG = 'debug'; +} + +if (env.DEBUG) { + console.log('poll result', result); +} + const run = cp.spawnSync( npmBinScript('mocha'), [...testFiles, ...flagArgs], diff --git a/bin/test_api.js b/bin/test_api.js new file mode 100644 index 00000000..2eb3fc3e --- /dev/null +++ b/bin/test_api.js @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2019 The xterm.js authors. All rights reserved. + * @license MIT + */ + +const cp = require('child_process'); +const path = require('path'); + + +// Add `out` to the NODE_PATH so absolute paths can be resolved. +const env = { ...process.env }; +env.NODE_PATH = path.resolve(__dirname, '../out'); + +let testFiles = [ + './addons/**/out/*api.js', + './out-test/**/*api.js', +]; + + +let flagArgs = []; + +if (process.argv.length > 2) { + const args = process.argv.slice(2); + flagArgs = args.filter(e => e.startsWith('--')); + // ability to inject particular test files via + // yarn test [testFileA testFileB ...] + files = args.filter(e => !e.startsWith('--')); + if (files.length) { + testFiles = files; + } +} + +env.DEBUG = flagArgs.indexOf('--debug') >= 0 ? 'debug' : ''; + +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); diff --git a/package.json b/package.json index 956cdbb1..192d8ca1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "lint": "tslint 'src/**/*.ts' 'addons/*/src/**/*.ts'", "test": "npm run test-unit", "posttest": "npm run lint", - "test-api": "mocha \"**/*.api.js\"", + "test-api": "node ./bin/test_api.js", "test-unit": "node ./bin/test.js", "test-unit-coverage": "node ./bin/test.js --coverage", "build": "tsc -b ./tsconfig.all.json", diff --git a/test/api/TestUtils.ts b/test/api/TestUtils.ts index d3674812..ba2c43fd 100644 --- a/test/api/TestUtils.ts +++ b/test/api/TestUtils.ts @@ -11,6 +11,11 @@ export async function pollFor(page: puppeteer.Page, evalOrFn: string | (() => 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)) { return new Promise(r => { setTimeout(() => r(pollFor(page, evalOrFn, val, preFn)), 1);