e2e 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -13
- package/dist/.build.json +1 -1
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/signals.d.ts +2 -2
- package/dist/cli/signals.js +2 -2
- package/package.json +14 -9
- package/skills/e2e/SKILL.md +3 -2
- package/skills/e2e/references/running.md +1 -1
- package/skills/e2e/references/setup.md +3 -2
package/README.md
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
<a href="https://tester.army/e2e?utm_source=e2e&utm_medium=github&utm_campaign=readme_banner"><img src="https://raw.githubusercontent.com/tester-army/e2e/main/.github/assets/readme-banner.png" alt="e2e by TesterArmy" width="100%" /></a>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="https://tester.army?utm_source=e2e&utm_medium=github&utm_campaign=readme_badge"><img alt="Made by TesterArmy" src="https://raw.githubusercontent.com/tester-army/e2e/main/.github/assets/made-by-testerarmy.svg" /></a>
|
|
5
|
+
<a href="https://www.npmjs.com/package/e2e"><img alt="npm version" src="https://img.shields.io/npm/v/e2e.svg?style=for-the-badge&labelColor=000000" /></a>
|
|
6
|
+
<a href="https://github.com/tester-army/e2e/blob/main/LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-green.svg?style=for-the-badge&labelColor=000000" /></a>
|
|
7
|
+
<a href="https://tester.army/discord"><img alt="Join the community on Discord" src="https://img.shields.io/badge/Join%20the%20community-5865F2.svg?style=for-the-badge&logo=discord&logoColor=white&labelColor=000000" /></a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
1
10
|
# e2e
|
|
2
11
|
|
|
3
|
-
|
|
4
|
-
Documentation: [e2e.tester.army/docs](https://e2e.tester.army/docs).
|
|
12
|
+
[e2e](https://tester.army/e2e?utm_source=e2e&utm_medium=github&utm_campaign=readme_intro) is an end-to-end testing framework for web and mobile apps. Describe a goal in natural language and an agent interacts with the app to complete it. Use locators and assertions in the same test to check exact results. Customize anything from agent to the engine.
|
|
5
13
|
|
|
6
|
-
```bash
|
|
7
|
-
npx e2e init
|
|
8
|
-
```
|
|
9
14
|
|
|
10
15
|
```ts
|
|
11
16
|
// tests/checkout.e2e.ts
|
|
@@ -21,13 +26,37 @@ test('a member upgrades to Pro', async ({ app, agent, screen }) => {
|
|
|
21
26
|
});
|
|
22
27
|
```
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
```bash
|
|
30
|
+
npx e2e init
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
An agent step that a later assertion verifies records its actions, and the
|
|
34
|
+
next run replays them with no model calls until the app changes. Tests
|
|
35
|
+
without agent steps need no model. Bring your own subscription, API key, or
|
|
36
|
+
local model.
|
|
37
|
+
|
|
38
|
+
## Documentation
|
|
39
|
+
|
|
40
|
+
[e2e.tester.army/docs](https://e2e.tester.army/docs): quickstart, writing
|
|
41
|
+
tests, mobile, migrating from Playwright, Cypress, Selenium, Detox, or
|
|
42
|
+
Maestro, and the full reference.
|
|
43
|
+
|
|
44
|
+
## Packages
|
|
45
|
+
|
|
46
|
+
- [`e2e`](https://www.npmjs.com/package/e2e): SDK, runner, and CLI.
|
|
47
|
+
- [`@e2e-dev/web`](https://www.npmjs.com/package/@e2e-dev/web): the browser engine.
|
|
48
|
+
- [`@e2e-dev/mobile`](https://www.npmjs.com/package/@e2e-dev/mobile): the iOS and Android engine.
|
|
49
|
+
- [`@e2e-dev/github`](https://www.npmjs.com/package/@e2e-dev/github): the pull request comment reporter.
|
|
50
|
+
- [`@e2e-dev/kernel`](https://www.npmjs.com/package/@e2e-dev/kernel): Kernel hosted browsers for the web
|
|
51
|
+
engine.
|
|
52
|
+
- [`@e2e-dev/eas`](https://www.npmjs.com/package/@e2e-dev/eas): EAS Simulators hosted iOS simulators and
|
|
53
|
+
Android emulators for the mobile engine.
|
|
54
|
+
|
|
55
|
+
## Contributing
|
|
29
56
|
|
|
30
|
-
|
|
57
|
+
See [CONTRIBUTING.md](https://github.com/tester-army/e2e/blob/main/CONTRIBUTING.md) and [SECURITY.md](https://github.com/tester-army/e2e/blob/main/SECURITY.md).
|
|
58
|
+
Apache-2.0.
|
|
31
59
|
|
|
32
|
-
|
|
33
|
-
|
|
60
|
+
Built by [TesterArmy](https://tester.army/?utm_source=e2e&utm_medium=github&utm_campaign=readme_footer),
|
|
61
|
+
the agentic testing platform that runs plain-English tests on web and mobile
|
|
62
|
+
apps and reports back with screenshots and recordings.
|
package/dist/.build.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.15.
|
|
1
|
+
{"version":"0.15.1"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"@e2e-dev/web":"0.11.
|
|
1
|
+
{"@e2e-dev/web":"0.11.1","@e2e-dev/mobile":"0.8.1","playwright":"1.63.0"}
|
package/dist/cli/signals.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* one not yet reached, so the state is the signals themselves: the first
|
|
10
10
|
* signal interrupts, the second forces, the third exits on the spot — the
|
|
11
11
|
* last resort for a teardown that is itself stuck. That exit skips the
|
|
12
|
-
* runner's teardown, so the app
|
|
13
|
-
*
|
|
12
|
+
* runner's teardown, so the app process groups it spawned are killed
|
|
13
|
+
* first; otherwise they outlive the run in their own groups and the
|
|
14
14
|
* next run fails with `APP_ALREADY_RUNNING`.
|
|
15
15
|
*/
|
|
16
16
|
export declare class SignalLadder {
|
package/dist/cli/signals.js
CHANGED
|
@@ -10,8 +10,8 @@ import { killManagedProcessGroups } from '../run/managed-process.js';
|
|
|
10
10
|
* one not yet reached, so the state is the signals themselves: the first
|
|
11
11
|
* signal interrupts, the second forces, the third exits on the spot — the
|
|
12
12
|
* last resort for a teardown that is itself stuck. That exit skips the
|
|
13
|
-
* runner's teardown, so the app
|
|
14
|
-
*
|
|
13
|
+
* runner's teardown, so the app process groups it spawned are killed
|
|
14
|
+
* first; otherwise they outlive the run in their own groups and the
|
|
15
15
|
* next run fails with `APP_ALREADY_RUNNING`.
|
|
16
16
|
*/
|
|
17
17
|
export class SignalLadder {
|
package/package.json
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "e2e",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"description": "SDK, runner, and CLI for agentic end-to-end testing",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"e2e",
|
|
7
|
+
"end-to-end",
|
|
7
8
|
"testing",
|
|
9
|
+
"test-runner",
|
|
10
|
+
"test-automation",
|
|
11
|
+
"ai",
|
|
12
|
+
"ai-testing",
|
|
13
|
+
"ai-agent",
|
|
14
|
+
"llm",
|
|
8
15
|
"agentic",
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"subscription"
|
|
16
|
+
"natural-language",
|
|
17
|
+
"web-testing",
|
|
18
|
+
"mobile-testing",
|
|
19
|
+
"qa"
|
|
14
20
|
],
|
|
15
21
|
"license": "Apache-2.0",
|
|
16
22
|
"contributors": [
|
|
@@ -29,7 +35,6 @@
|
|
|
29
35
|
"publishConfig": {
|
|
30
36
|
"registry": "https://registry.npmjs.org/",
|
|
31
37
|
"access": "public",
|
|
32
|
-
"provenance": false,
|
|
33
38
|
"tag": "latest"
|
|
34
39
|
},
|
|
35
40
|
"type": "module",
|
|
@@ -103,7 +108,7 @@
|
|
|
103
108
|
"@ai-sdk/openai": "4.0.71",
|
|
104
109
|
"@ai-sdk/openai-compatible": "3.0.53",
|
|
105
110
|
"@ai-sdk/xai": "5.0.4",
|
|
106
|
-
"@e2e-dev/web": "0.11.
|
|
111
|
+
"@e2e-dev/web": "0.11.1",
|
|
107
112
|
"@openrouter/ai-sdk-provider": "3.1.0",
|
|
108
113
|
"@types/node": "26.6.2",
|
|
109
114
|
"@types/pngjs": "6.0.5",
|
|
@@ -118,7 +123,7 @@
|
|
|
118
123
|
"node": ">=22.12.0"
|
|
119
124
|
},
|
|
120
125
|
"scripts": {
|
|
121
|
-
"build": "node -
|
|
126
|
+
"build": "node scripts/prepare-build.ts && tsc --project tsconfig.build.json && node scripts/write-sibling-versions.ts && node ../../scripts/stamp-dist.ts",
|
|
122
127
|
"typecheck": "tsc --noEmit",
|
|
123
128
|
"test": "vitest run",
|
|
124
129
|
"test:watch": "vitest",
|
package/skills/e2e/SKILL.md
CHANGED
|
@@ -24,10 +24,11 @@ import { gateway } from 'ai';
|
|
|
24
24
|
export default {
|
|
25
25
|
targets: [
|
|
26
26
|
{
|
|
27
|
-
engine: web(
|
|
27
|
+
engine: web(),
|
|
28
|
+
app: {
|
|
28
29
|
url: 'http://127.0.0.1:3000',
|
|
29
30
|
command: { executable: 'pnpm', args: ['dev'], log: '.e2e/logs/app.log' },
|
|
30
|
-
}
|
|
31
|
+
},
|
|
31
32
|
},
|
|
32
33
|
],
|
|
33
34
|
// The model behind every agent.* step: an AI SDK instance; gateway() from 'ai' reads AI_GATEWAY_API_KEY or a Vercel OIDC token.
|
|
@@ -143,7 +143,7 @@ deterministic, never retry it; only exit 3 is worth a job-level retry.
|
|
|
143
143
|
|
|
144
144
|
The first SIGINT or SIGTERM interrupts and writes the report if any test
|
|
145
145
|
had started; the second forces engine teardown; the third kills the app
|
|
146
|
-
|
|
146
|
+
process groups and exits 130 at once.
|
|
147
147
|
|
|
148
148
|
## Continuous integration
|
|
149
149
|
|
|
@@ -77,10 +77,11 @@ export default {
|
|
|
77
77
|
tests: 'tests/**/*.e2e.ts',
|
|
78
78
|
targets: [
|
|
79
79
|
{
|
|
80
|
-
engine: web(
|
|
80
|
+
engine: web(),
|
|
81
|
+
app: {
|
|
81
82
|
url: 'http://127.0.0.1:3000',
|
|
82
83
|
command: { executable: 'pnpm', args: ['dev'], log: '.e2e/logs/app.log' },
|
|
83
|
-
}
|
|
84
|
+
},
|
|
84
85
|
},
|
|
85
86
|
],
|
|
86
87
|
// Model behind every agent.* step.
|