From 14a2bf524d9a98b8c8bf1dc69b6e4ff7c5680d61 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Thu, 23 Nov 2023 15:55:03 +0100 Subject: [PATCH] fix: nightwatch integration The generated applications were failing out of the box, and went unnoticed as nightwatch is not built on CI. I took inspiration from https://github.com/nightwatchjs/nightwatch-plugin-vue and https://github.com/nightwatchjs/create-nightwatch to make the setup a bit lighter and functional (we now let nightwatch start vite directly). The pnpm test script should now work for every combination generated. --- pnpm-lock.yaml | 9 ++++---- scripts/test.mjs | 23 +++++++++++++++---- template/base/package.json | 2 +- template/config/nightwatch-ct/package.json | 5 +++- template/config/nightwatch/nightwatch.conf.js | 5 ++-- .../config/nightwatch/nightwatch/globals.js | 23 ------------------- template/config/nightwatch/package.json | 5 ++-- .../config/nightwatch/tests/e2e/example.js | 5 +--- .../nightwatch/nightwatch/tsconfig.json | 3 ++- utils/filterList.ts | 6 +---- 10 files changed, 37 insertions(+), 49 deletions(-) delete mode 100644 template/config/nightwatch/nightwatch/globals.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a9d6d972..5266a3194 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,7 +70,7 @@ importers: specifier: ^4.5.0 version: 4.5.0(vite@5.0.2)(vue@3.3.8) vite: - specifier: ^5.0.1 + specifier: ^5.0.2 version: 5.0.2(@types/node@18.18.10) template/config/cypress: @@ -128,15 +128,16 @@ importers: ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.18.10)(typescript@5.2.2) - wait-on: - specifier: ^7.2.0 - version: 7.2.0(debug@4.3.4) template/config/nightwatch-ct: dependencies: vue: specifier: ^3.3.8 version: 3.3.8(typescript@5.2.2) + devDependencies: + '@vue/test-utils': + specifier: ^2.4.2 + version: 2.4.2(vue@3.3.8) template/config/pinia: dependencies: diff --git a/scripts/test.mjs b/scripts/test.mjs index cab7b948d..fa1a43dcf 100644 --- a/scripts/test.mjs +++ b/scripts/test.mjs @@ -1,9 +1,6 @@ #!/usr/bin/env zx import 'zx/globals' -// Vitest would otherwise enable watch mode by default. -process.env.CI = '1' - const playgroundDir = path.resolve(__dirname, '../playground/') let projects = fs .readdirSync(playgroundDir, { withFileTypes: true }) @@ -21,7 +18,13 @@ for (const projectName of projects) { cd(path.resolve(playgroundDir, projectName)) const packageJSON = require(path.resolve(playgroundDir, projectName, 'package.json')) - console.log(`Building ${projectName}`) + console.log(` + +##### +Building ${projectName} +##### + + `) await $`pnpm build` if ('@playwright/test' in packageJSON.devDependencies) { @@ -35,6 +38,16 @@ for (const projectName of projects) { if ('test:unit' in packageJSON.scripts) { console.log(`Running unit tests in ${projectName}`) - await $`pnpm test:unit` + if (projectName.includes('vitest') || projectName.includes('with-tests')) { + // Vitest would otherwise enable watch mode by default. + await $`CI=1 pnpm test:unit` + } else { + await $`pnpm test:unit` + } + } + + if ('type-check' in packageJSON.scripts) { + console.log(`Running type-check in ${projectName}`) + await $`pnpm type-check` } } diff --git a/template/base/package.json b/template/base/package.json index 5798b2de0..fa842a775 100644 --- a/template/base/package.json +++ b/template/base/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^4.5.0", - "vite": "^5.0.1" + "vite": "^5.0.2" } } diff --git a/template/config/nightwatch-ct/package.json b/template/config/nightwatch-ct/package.json index 9299618bf..8982106f5 100644 --- a/template/config/nightwatch-ct/package.json +++ b/template/config/nightwatch-ct/package.json @@ -1,8 +1,11 @@ { "scripts": { - "test:unit": "nightwatch src/components/**/__tests__/*" + "test:unit": "nightwatch src/**/__tests__/*" }, "dependencies": { "vue": "^3.3.8" + }, + "devDependencies": { + "@vue/test-utils": "^2.4.2" } } diff --git a/template/config/nightwatch/nightwatch.conf.js b/template/config/nightwatch/nightwatch.conf.js index 8ff170000..05889c61f 100644 --- a/template/config/nightwatch/nightwatch.conf.js +++ b/template/config/nightwatch/nightwatch.conf.js @@ -30,10 +30,11 @@ module.exports = { plugins: ['@nightwatch/vue'], // See https://nightwatchjs.org/guide/concepts/test-globals.html#external-test-globals - globals_path: 'nightwatch/globals.js', + globals_path: '', vite_dev_server: { - start_vite: false + start_vite: true, + port: process.env.CI ? 4173 : 5173 }, webdriver: {}, diff --git a/template/config/nightwatch/nightwatch/globals.js b/template/config/nightwatch/nightwatch/globals.js deleted file mode 100644 index 9387d355c..000000000 --- a/template/config/nightwatch/nightwatch/globals.js +++ /dev/null @@ -1,23 +0,0 @@ -const waitOn = require('wait-on') -const { setup, teardown } = require('@nightwatch/vue') - -const serverPort = process.env.CI ? '4173' : '5173' - -module.exports = { - before(done) { - setup() - waitOn({ - resources: [`http-get://localhost:${serverPort}`], - verbose: true, - headers: { - accept: 'text/html' - } - }).then(() => { - done() - }) - }, - - after() { - teardown() - } -} diff --git a/template/config/nightwatch/package.json b/template/config/nightwatch/package.json index a77d512d8..4f281a775 100644 --- a/template/config/nightwatch/package.json +++ b/template/config/nightwatch/package.json @@ -1,6 +1,6 @@ { "scripts": { - "test:e2e": "nightwatch tests/e2e" + "test:e2e": "nightwatch tests/e2e/*" }, "devDependencies": { "nightwatch": "^3.3.2", @@ -9,7 +9,6 @@ "@types/nightwatch": "^2.3.28", "geckodriver": "^4.2.1", "chromedriver": "^119.0.0", - "ts-node": "^10.9.1", - "wait-on": "^7.2.0" + "ts-node": "^10.9.1" } } diff --git a/template/config/nightwatch/tests/e2e/example.js b/template/config/nightwatch/tests/e2e/example.js index cf2e3c862..43be3fce1 100644 --- a/template/config/nightwatch/tests/e2e/example.js +++ b/template/config/nightwatch/tests/e2e/example.js @@ -4,10 +4,7 @@ describe('My First Test', function () { }) it('visits the app root url', function () { - browser.assert - .textContains('.green', 'You did it!') - .assert.elementHasCount('.wrapper nav a', 2) - .strictClick('.wrapper nav a:last-child') + browser.assert.textContains('.green', 'You did it!') }) after((browser) => browser.end()) diff --git a/template/tsconfig/nightwatch/nightwatch/tsconfig.json b/template/tsconfig/nightwatch/nightwatch/tsconfig.json index 652d9bd6a..b4b031b9f 100644 --- a/template/tsconfig/nightwatch/nightwatch/tsconfig.json +++ b/template/tsconfig/nightwatch/nightwatch/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "target": "ESNext", "module": "commonjs", + "moduleResolution": "node", "composite": true, "rootDir": "../", "lib": ["ESNext", "dom"], @@ -10,7 +11,7 @@ }, "include": ["../node_modules/@nightwatch/**/*", "../src/components/**/*", "../tests/e2e/**/*"], "ts-node": { - "files": true + "transpileOnly": true }, "files": ["nightwatch.d.ts"] } diff --git a/utils/filterList.ts b/utils/filterList.ts index dd9f9c463..37780156d 100644 --- a/utils/filterList.ts +++ b/utils/filterList.ts @@ -1,5 +1 @@ -export const FILES_TO_FILTER = [ - 'nightwatch.e2e.conf.js', - 'nightwatch.component.conf.js', - 'globals.js' -] +export const FILES_TO_FILTER = ['nightwatch.e2e.conf.js', 'nightwatch.component.conf.js'] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy