Skip to content

Commit fb306e0

Browse files
authored
feat(e2e): add cucumber test runner (#711)
1 parent 66fa0b2 commit fb306e0

File tree

13 files changed

+703
-639
lines changed

13 files changed

+703
-639
lines changed

examples/app-cucumber/app.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<template>
2+
<div>
3+
<NuxtWelcome />
4+
</div>
5+
</template>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"default": {
3+
"paths": [
4+
"test/acceptance/features/**/*.feature"
5+
],
6+
"import": [
7+
"test/acceptance/**/*.ts"
8+
],
9+
"publish": false,
10+
"format": [
11+
"summary"
12+
]
13+
}
14+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// https://nuxt.com/docs/api/configuration/nuxt-config
2+
export default defineNuxtConfig({
3+
devtools: { enabled: true }
4+
})

examples/app-cucumber/package.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "nuxt-app-cucumber",
3+
"private": true,
4+
"type": "module",
5+
"scripts": {
6+
"build": "nuxt build",
7+
"dev": "nuxt dev",
8+
"generate": "nuxt generate",
9+
"preview": "nuxt preview",
10+
"postinstall": "nuxt prepare",
11+
"test": "NODE_OPTIONS='--loader ts-node/esm' NODE_ENV=test cucumber-js"
12+
},
13+
"dependencies": {
14+
"nuxt": "^3.9.1",
15+
"vue": "^3.4.7",
16+
"vue-router": "^4.2.5"
17+
},
18+
"devDependencies": {
19+
"@cucumber/cucumber": "^10.2.1",
20+
"@nuxt/test-utils": "latest",
21+
"ts-node": "^10.9.2"
22+
}
23+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
@tag-home-page
2+
3+
Feature: 🏠 Home Page
4+
5+
Scenario: 🏠 Home Page is displayed
6+
Given the user goes on the home page
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import assert from 'node:assert'
2+
import { Given } from '@cucumber/cucumber'
3+
import { $fetch, createPage } from '@nuxt/test-utils/e2e'
4+
5+
Given(/^the user goes on the home page$/u, async function (): Promise<void> {
6+
// Browser test
7+
const page = await createPage('/')
8+
const text = await page.getByRole('heading', { name: 'Welcome to Nuxt!' }).innerText()
9+
assert.match(text, /Welcome to Nuxt!/)
10+
await page.close()
11+
12+
// SSR test
13+
const html: string = await $fetch('/')
14+
assert.match(html, /<!DOCTYPE html>/)
15+
})
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { fileURLToPath } from 'node:url'
2+
import { setup } from '@nuxt/test-utils/e2e'
3+
4+
await setup({
5+
runner: 'cucumber',
6+
server: true,
7+
rootDir: fileURLToPath(new URL('../../../..', import.meta.url))
8+
})
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "./.nuxt/tsconfig.json"
3+
}

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"scripts": {
3131
"lint": "eslint --ext .vue,.ts,.js,.mjs .",
3232
"lint:fix": "eslint --ext .vue,.ts,.js,.mjs . --fix",
33-
"test:examples": "pnpm -r test",
33+
"test:examples": "pnpm -r test --filter !nuxt-app-cucumber && pnpm -r test --filter nuxt-app-cucumber",
3434
"test:types": "vue-tsc --noEmit",
3535
"test:unit": "vitest test/unit --run",
3636
"prepack": "unbuild",
@@ -63,6 +63,7 @@
6363
"vitest-environment-nuxt": "^1.0.0"
6464
},
6565
"devDependencies": {
66+
"@cucumber/cucumber": "^10.2.1",
6667
"@jest/globals": "29.7.0",
6768
"@nuxt/devtools": "1.0.8",
6869
"@nuxt/eslint-config": "0.2.0",
@@ -93,6 +94,7 @@
9394
"vue-tsc": "1.8.27"
9495
},
9596
"peerDependencies": {
97+
"@cucumber/cucumber": "^10.2.1",
9698
"@jest/globals": "^29.5.0",
9799
"@testing-library/vue": "^7.0.0 || ^8.0.1",
98100
"@vitest/ui": "^0.34.6 || ^1.0.0",
@@ -107,6 +109,9 @@
107109
"vue-router": "^4.0.0"
108110
},
109111
"peerDependenciesMeta": {
112+
"@cucumber/cucumber": {
113+
"optional": true
114+
},
110115
"@testing-library/vue": {
111116
"optional": true
112117
},

0 commit comments

Comments
 (0)