From: Eduardo San Martin Morote Date: Thu, 9 Jun 2022 12:33:05 +0000 (+0200) Subject: ci: run server with tests X-Git-Tag: v4.1.0~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=836fce5ce0491d8266de4d19644a7dd3f45b84f8;p=thirdparty%2Fvuejs%2Frouter.git ci: run server with tests --- diff --git a/packages/router/e2e/devServer.js b/packages/router/e2e/devServer.js new file mode 100644 index 00000000..181ee45a --- /dev/null +++ b/packages/router/e2e/devServer.js @@ -0,0 +1,27 @@ +const { createServer, resolveConfig } = require('vite') +const viteConfig = require('./vite.config') +const config = viteConfig({ prod: false }) + +/** @type {import('vite').ViteDevServer} */ +let server = null + +;(async () => { + const app = await createServer({ + configFile: false, + ...config, + }) + server = await app.listen(process.env.PORT || 3000) + internalResolve(server) +})() + +let internalResolve = () => {} + +module.exports = function getServer() { + return new Promise((resolve, reject) => { + if (server) { + resolve(server) + } else { + internalResolve = resolve + } + }) +} diff --git a/packages/router/e2e/runner.js b/packages/router/e2e/runner.js index 0f290363..4b69b71a 100644 --- a/packages/router/e2e/runner.js +++ b/packages/router/e2e/runner.js @@ -19,41 +19,55 @@ const args = process.argv.slice(2) // note this works because nighwatch doesn't use this option const isLocal = args.indexOf('--local') > -1 -try { - require.main.filename = path.resolve( - __dirname, - '../../../node_modules/.bin/nightwatch' - ) +const getServer = + args.indexOf('--dev') > -1 + ? null + : // : process.env.CI || args.indexOf('--ci') > -1 + // ? require('./staticServer') + require('./devServer') - // Code to start browserstack local before start of test - console.log('Connecting local') +;(async () => { + const server = await getServer() - /** @type {import('browserstack-local').Local} */ - let bs_local - if (isLocal) { - bs_local = new browserstack.Local() - Nightwatch.bs_local = bs_local + try { + require.main.filename = path.resolve( + __dirname, + '../../../node_modules/.bin/nightwatch' + ) - bs_local.start( - { key: process.env.BROWSERSTACK_ACCESS_KEY }, - async error => { - if (error) throw error + /** @type {import('browserstack-local').Local} */ + let bs_local + if (isLocal) { + // Code to start browserstack local before start of test + console.log('Connecting local') + bs_local = new browserstack.Local() + Nightwatch.bs_local = bs_local - console.log('Connected. Now testing...') - await runNighwatchCli().finally(() => { - // Code to stop browserstack local after end of single test - bs_local.stop(() => {}) - }) - } - ) - } else { - runNighwatchCli() + bs_local.start( + { key: process.env.BROWSERSTACK_ACCESS_KEY }, + async error => { + if (error) throw error + + console.log('Connected. Now testing...') + await runNighwatchCli().finally(() => { + // Code to stop browserstack local after end of single test + bs_local.stop(() => { + server.close() + }) + }) + } + ) + } else { + await runNighwatchCli() + server.close() + } + } catch (ex) { + console.log('There was an error while starting the test runner:\n\n') + process.stderr.write(ex.stack + '\n') + server.close() + process.exit(2) } -} catch (ex) { - console.log('There was an error while starting the test runner:\n\n') - process.stderr.write(ex.stack + '\n') - process.exit(2) -} +})() function runNighwatchCli() { return new Promise((resolve, reject) => { diff --git a/packages/router/e2e/vite.config.ts b/packages/router/e2e/vite.config.js similarity index 85% rename from packages/router/e2e/vite.config.ts rename to packages/router/e2e/vite.config.js index 67a562f8..d50e52ff 100644 --- a/packages/router/e2e/vite.config.ts +++ b/packages/router/e2e/vite.config.js @@ -1,10 +1,11 @@ -import fs from 'fs' -import { resolve, join } from 'path' -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import history from 'connect-history-api-fallback' +const fs = require('fs') +const { resolve, join } = require('path') +const { defineConfig } = require('vite') +const vue = require('@vitejs/plugin-vue') +const history = require('connect-history-api-fallback') -const examples: string[] = [] +/** @type {string[]} */ +const examples = [] fs.readdirSync(__dirname).forEach(dir => { const fullDir = join(__dirname, dir) const entry = join(fullDir, 'index.ts') @@ -14,7 +15,12 @@ fs.readdirSync(__dirname).forEach(dir => { }) // https://vitejs.dev/config/ -const config = (env: Record = {}) => { +/** + * + * @param {Record} env + * @returns + */ +const config = env => { return defineConfig({ root: resolve(__dirname), resolve: { @@ -39,7 +45,8 @@ const config = (env: Record = {}) => { entries[name] = resolve(__dirname, name, 'index.html') return entries }, - { index: resolve(__dirname, 'index.html') } as Record + /** @type {Record} */ + { index: resolve(__dirname, 'index.html') } ), }, }, diff --git a/packages/router/nightwatch.conf.js b/packages/router/nightwatch.conf.js index ba1ccf19..1636bee5 100644 --- a/packages/router/nightwatch.conf.js +++ b/packages/router/nightwatch.conf.js @@ -104,9 +104,10 @@ module.exports = { // w3c:false tells Chromedriver to run using the legacy JSONWire protocol (not required in Chrome 78) w3c: true, args: [ - //'--no-sandbox', + // needed for ci + '--no-sandbox', //'--ignore-certificate-errors', - //'--allow-insecure-localhost', + '--allow-insecure-localhost', //'--headless' ], }, diff --git a/packages/router/old-e2e/devServer.js b/packages/router/old-e2e/devServer.js deleted file mode 100644 index fbac528e..00000000 --- a/packages/router/old-e2e/devServer.js +++ /dev/null @@ -1,16 +0,0 @@ -const { createServer } = require('vite') -const viteConfig = require('./vite.config') -const config = viteConfig({ prod: false }) - -let server = null - -;(async () => { - const app = await createServer({ - configFile: false, - ...config, - }) - const port = process.env.PORT || 3000 - server = await app.listen(port) -})() - -module.exports = server diff --git a/packages/router/package.json b/packages/router/package.json index cb47bf0e..a48da77f 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -55,7 +55,7 @@ "build:playground": "vue-tsc --noEmit && vite build --config playground/vite.config.js", "build:e2e": "vue-tsc --noEmit && vite build --config e2e/vite.config.js", "build:size": "pnpm run build && rollup -c size-checks/rollup.config.js", - "dev:e2e": "vite --config e2e/vite.config.ts", + "dev:e2e": "vite --config e2e/vite.config.js", "docs": "vitepress dev docs", "docs:build": "vitepress build docs", "lint": "pnpm run lint:script && pnpm run lint:html",