@kraken-e2e/driver-web 1.0.0 → 3.0.0
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/dist/devices.d.ts +4 -0
- package/dist/devices.d.ts.map +1 -0
- package/dist/devices.js +53 -0
- package/dist/devices.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DeviceTarget } from '@kraken-e2e/contracts';
|
|
2
|
+
import { type CommandRunner } from './doctor.js';
|
|
3
|
+
export declare function listWebTargets(run?: CommandRunner, fsExists?: (path: string) => boolean): Promise<readonly DeviceTarget[]>;
|
|
4
|
+
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAe,MAAM,aAAa,CAAC;AAe9D,wBAAsB,cAAc,CAClC,GAAG,GAAE,aAA2B,EAChC,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAoB,GAC/C,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CA+BlC"}
|
package/dist/devices.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser enumeration for `kraken devices` (contract 2.1). Browsers are
|
|
3
|
+
* always 'available' (they spawn per session); the value here is showing the
|
|
4
|
+
* user which browser keys their config can use on this host.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { spawnRunner } from './doctor.js';
|
|
8
|
+
const MAC_BROWSERS = [
|
|
9
|
+
['chrome', 'Chrome', '/Applications/Google Chrome.app'],
|
|
10
|
+
['firefox', 'Firefox', '/Applications/Firefox.app'],
|
|
11
|
+
['safari', 'Safari', '/Applications/Safari.app'],
|
|
12
|
+
['edge', 'Edge', '/Applications/Microsoft Edge.app'],
|
|
13
|
+
];
|
|
14
|
+
const LINUX_BROWSERS = [
|
|
15
|
+
['chrome', 'Chrome', 'google-chrome'],
|
|
16
|
+
['chrome', 'Chromium', 'chromium'],
|
|
17
|
+
['firefox', 'Firefox', 'firefox'],
|
|
18
|
+
];
|
|
19
|
+
export async function listWebTargets(run = spawnRunner, fsExists = existsSync) {
|
|
20
|
+
const targets = [];
|
|
21
|
+
if (process.platform === 'darwin') {
|
|
22
|
+
for (const [key, name, appPath] of MAC_BROWSERS) {
|
|
23
|
+
if (!fsExists(appPath))
|
|
24
|
+
continue;
|
|
25
|
+
targets.push({
|
|
26
|
+
id: key,
|
|
27
|
+
name,
|
|
28
|
+
platform: 'web',
|
|
29
|
+
kind: 'browser',
|
|
30
|
+
state: 'available',
|
|
31
|
+
actorConfig: { platform: 'web', browser: key },
|
|
32
|
+
...(key === 'safari' ? { detail: 'max ONE concurrent Safari session per host' } : {}),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return targets;
|
|
36
|
+
}
|
|
37
|
+
const seen = new Set();
|
|
38
|
+
for (const [key, name, binary] of LINUX_BROWSERS) {
|
|
39
|
+
if (seen.has(key) || run(binary, ['--version']).status !== 0)
|
|
40
|
+
continue;
|
|
41
|
+
seen.add(key);
|
|
42
|
+
targets.push({
|
|
43
|
+
id: key,
|
|
44
|
+
name,
|
|
45
|
+
platform: 'web',
|
|
46
|
+
kind: 'browser',
|
|
47
|
+
state: 'available',
|
|
48
|
+
actorConfig: { platform: 'web', browser: key },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return targets;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAsB,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,YAAY,GAAyE;IACzF,CAAC,QAAQ,EAAE,QAAQ,EAAE,iCAAiC,CAAC;IACvD,CAAC,SAAS,EAAE,SAAS,EAAE,2BAA2B,CAAC;IACnD,CAAC,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,CAAC;IAChD,CAAC,MAAM,EAAE,MAAM,EAAE,kCAAkC,CAAC;CACrD,CAAC;AAEF,MAAM,cAAc,GAAwE;IAC1F,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IACrC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;IAClC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAqB,WAAW,EAChC,WAAsC,UAAU;IAEhD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACjC,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,GAAG;gBACP,IAAI;gBACJ,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC9C,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,GAAG;YACP,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5E,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3D;AASD,eAAO,MAAM,GAAG,yGA2Dd,CAAC;AAEH,eAAe,GAAG,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* Safari runs classic WebDriver (ADR-0001 §5.6).
|
|
8
8
|
* IMPORT-SAFETY RULE (§5.5): webdriverio loads dynamically in createSession().
|
|
9
9
|
*/
|
|
10
|
+
import { join } from 'node:path';
|
|
10
11
|
import { defineDriver } from '@kraken-e2e/contracts';
|
|
12
|
+
import { listWebTargets } from './devices.js';
|
|
11
13
|
import { webDoctorChecks } from './doctor.js';
|
|
12
14
|
import { manifest } from './manifest.js';
|
|
13
15
|
import { WebUserSession } from './wdio-session.js';
|
|
@@ -18,11 +20,16 @@ const BROWSER_NAMES = {
|
|
|
18
20
|
edge: 'MicrosoftEdge',
|
|
19
21
|
};
|
|
20
22
|
export const web = defineDriver((opts = {}) => {
|
|
23
|
+
let startedProjectRoot;
|
|
21
24
|
return {
|
|
22
25
|
manifest,
|
|
23
26
|
doctor: webDoctorChecks(),
|
|
24
|
-
async start() {
|
|
27
|
+
async start(host) {
|
|
25
28
|
// Nothing to boot: WDIO spawns/manages the browser driver per session.
|
|
29
|
+
startedProjectRoot = host.projectRoot ?? process.cwd();
|
|
30
|
+
},
|
|
31
|
+
async listTargets() {
|
|
32
|
+
return listWebTargets();
|
|
26
33
|
},
|
|
27
34
|
async createSession(actor, services) {
|
|
28
35
|
const config = actor.config;
|
|
@@ -47,6 +54,12 @@ export const web = defineDriver((opts = {}) => {
|
|
|
47
54
|
const browser = await remote({
|
|
48
55
|
capabilities: capabilities,
|
|
49
56
|
logLevel: 'error',
|
|
57
|
+
// Project-local driver cache: WDIO's default is the OS tmpdir, where a
|
|
58
|
+
// single interrupted download leaves a corrupted folder that breaks
|
|
59
|
+
// every later run on the machine (observed live: chromedriver folder
|
|
60
|
+
// present, executable missing, all retries failing). A per-project dir
|
|
61
|
+
// is trivially inspectable and deletable: rm -rf .kraken/browser-cache
|
|
62
|
+
cacheDir: join(startedProjectRoot ?? process.cwd(), '.kraken', 'browser-cache'),
|
|
50
63
|
});
|
|
51
64
|
const session = new WebUserSession(browser, actor, services);
|
|
52
65
|
const baseUrl = config['baseUrl'];
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAwB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWzE,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE;IAC9D,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,eAAe,EAAE;QAEzB,KAAK,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kraken-e2e/driver-web",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Web driver: WebdriverIO native (WebDriver BiDi where available; Safari runs classic WebDriver)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"node": ">=22.13.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@kraken-e2e/contracts": "^0.
|
|
26
|
+
"@kraken-e2e/contracts": "^3.0.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^22.15.0",
|
|
30
30
|
"typescript": "~6.0.3",
|
|
31
31
|
"vitest": "^4.1.9",
|
|
32
|
-
"@kraken-e2e/contracts": "0.
|
|
33
|
-
"@kraken-e2e/core": "0.
|
|
32
|
+
"@kraken-e2e/contracts": "3.0.0",
|
|
33
|
+
"@kraken-e2e/core": "3.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"webdriverio": "9.29.1"
|