@astur-mobile/core 0.5.0-beta.5 → 0.7.0-beta
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/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +90 -24
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts +97 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +233 -0
- package/dist/browser.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/locator.d.ts +190 -1
- package/dist/locator.d.ts.map +1 -1
- package/dist/locator.js +403 -19
- package/dist/locator.js.map +1 -1
- package/dist/session.d.ts +150 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +280 -24
- package/dist/session.js.map +1 -1
- package/package.json +2 -2
package/dist/agent.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export interface NativeAgentClientOptions {
|
|
|
15
15
|
timeout?: number;
|
|
16
16
|
commandTimeout?: number;
|
|
17
17
|
handshakeTimeout?: number;
|
|
18
|
+
/** Per-session secret the agent requires, sent as a bearer credential. */
|
|
19
|
+
token?: string;
|
|
18
20
|
fetchImpl?: typeof fetch;
|
|
19
21
|
}
|
|
20
22
|
export declare function connectNativeAgentClient(options: NativeAgentClientOptions): Promise<NativeAgentClient>;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,0BAA0B,EAE1B,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,CAAC,SAAS,iBAAiB,EACjC,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAYD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6B5G;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrE"}
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,0BAA0B,EAE1B,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,CAAC,SAAS,iBAAiB,EACjC,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAYD,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6B5G;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrE"}
|
package/dist/agent.js
CHANGED
|
@@ -58,44 +58,94 @@ function createNativeAgentClient(options) {
|
|
|
58
58
|
platform: options.platform,
|
|
59
59
|
commandTimeout: timeout,
|
|
60
60
|
command: async (method, params) => {
|
|
61
|
-
return sendNativeAgentCommand(fetchImpl, endpoint, timeout, method, params);
|
|
61
|
+
return sendNativeAgentCommand(fetchImpl, endpoint, timeout, options.token, method, params);
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
async function sendNativeAgentCommand(fetchImpl, endpoint, timeout, method, params) {
|
|
65
|
+
async function sendNativeAgentCommand(fetchImpl, endpoint, timeout, token, method, params) {
|
|
66
66
|
const id = randomUUID();
|
|
67
67
|
const envelope = {
|
|
68
68
|
id,
|
|
69
69
|
protocolVersion: '1.0',
|
|
70
70
|
command: method,
|
|
71
71
|
deadlineMs: Date.now() + timeout,
|
|
72
|
+
budgetMs: timeout,
|
|
72
73
|
payload: params,
|
|
73
74
|
method,
|
|
74
75
|
params
|
|
75
76
|
};
|
|
77
|
+
// One deadline covers the whole exchange: sending, the headers, and reading
|
|
78
|
+
// the body. Clearing the timer once headers arrived used to leave the body
|
|
79
|
+
// read unbounded, so a response trickling in after the timeout still counted.
|
|
76
80
|
const controller = new AbortController();
|
|
77
|
-
|
|
81
|
+
let timer;
|
|
82
|
+
const deadline = new Promise((_resolve, reject) => {
|
|
83
|
+
timer = setTimeout(() => {
|
|
84
|
+
reject(new AsturError('AGENT_COMMAND_TIMEOUT', `Native agent command ${method} got no complete response within ${timeout} ms.`, { endpoint, method, timeout }));
|
|
85
|
+
controller.abort();
|
|
86
|
+
}, timeout);
|
|
87
|
+
});
|
|
88
|
+
// The deadline is always raced; this only keeps a rejection that lands
|
|
89
|
+
// between two races from being reported as unhandled.
|
|
90
|
+
deadline.catch(() => undefined);
|
|
91
|
+
let payload;
|
|
92
|
+
try {
|
|
93
|
+
payload = await Promise.race([
|
|
94
|
+
exchangeNativeAgentCommand(fetchImpl, endpoint, token, method, envelope, controller.signal, deadline),
|
|
95
|
+
deadline
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
clearTimeout(timer);
|
|
100
|
+
}
|
|
101
|
+
if (!payload || payload.id !== id) {
|
|
102
|
+
throw new AsturError('AGENT_RESPONSE_MISMATCH', `Native agent command ${method} returned a mismatched command id.`, {
|
|
103
|
+
endpoint,
|
|
104
|
+
method,
|
|
105
|
+
expectedId: id,
|
|
106
|
+
receivedId: payload?.id
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (!payload.ok) {
|
|
110
|
+
throw new AsturError(payload.error?.code ?? 'AGENT_COMMAND_FAILED', payload.error?.message ?? `Native agent command ${method} failed.`, {
|
|
111
|
+
endpoint,
|
|
112
|
+
method,
|
|
113
|
+
executed: payload.executed,
|
|
114
|
+
error: payload.error,
|
|
115
|
+
diagnostics: payload.diagnostics,
|
|
116
|
+
timing: payload.timing
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return (payload.result ?? payload.data);
|
|
120
|
+
}
|
|
121
|
+
async function exchangeNativeAgentCommand(fetchImpl, endpoint, token, method, envelope, signal, deadline) {
|
|
78
122
|
let response;
|
|
79
123
|
try {
|
|
80
124
|
response = await fetchImpl(endpoint, {
|
|
81
125
|
method: 'POST',
|
|
82
126
|
headers: {
|
|
83
|
-
'content-type': 'application/json'
|
|
127
|
+
'content-type': 'application/json',
|
|
128
|
+
...(token ? { authorization: `Bearer ${token}` } : {})
|
|
84
129
|
},
|
|
85
130
|
body: JSON.stringify(envelope),
|
|
86
|
-
signal
|
|
131
|
+
signal
|
|
87
132
|
});
|
|
88
133
|
}
|
|
89
134
|
catch (error) {
|
|
135
|
+
if (signal.aborted) {
|
|
136
|
+
return deadline;
|
|
137
|
+
}
|
|
90
138
|
throw new AsturError('AGENT_TRANSPORT_FAILED', `Native agent command ${method} failed to reach ${endpoint}.`, {
|
|
91
139
|
endpoint,
|
|
92
140
|
method,
|
|
93
|
-
timeout,
|
|
94
141
|
cause: stringifyUnknownError(error)
|
|
95
142
|
});
|
|
96
143
|
}
|
|
97
|
-
|
|
98
|
-
|
|
144
|
+
if (response.status >= 400 && response.status < 500) {
|
|
145
|
+
const refusal = await readRefusal(response);
|
|
146
|
+
if (refusal) {
|
|
147
|
+
throw refusal;
|
|
148
|
+
}
|
|
99
149
|
}
|
|
100
150
|
if (!response.ok) {
|
|
101
151
|
throw new AsturError('AGENT_TRANSPORT_FAILED', `Native agent command ${method} failed with HTTP ${response.status}.`, {
|
|
@@ -105,35 +155,51 @@ async function sendNativeAgentCommand(fetchImpl, endpoint, timeout, method, para
|
|
|
105
155
|
statusText: response.statusText
|
|
106
156
|
});
|
|
107
157
|
}
|
|
108
|
-
let
|
|
158
|
+
let body;
|
|
109
159
|
try {
|
|
110
|
-
|
|
160
|
+
body = await response.text();
|
|
111
161
|
}
|
|
112
162
|
catch (error) {
|
|
113
|
-
|
|
163
|
+
if (signal.aborted) {
|
|
164
|
+
return deadline;
|
|
165
|
+
}
|
|
166
|
+
throw new AsturError('AGENT_TRANSPORT_FAILED', `Native agent command ${method} lost its response from ${endpoint}.`, {
|
|
114
167
|
endpoint,
|
|
115
168
|
method,
|
|
116
169
|
cause: stringifyUnknownError(error)
|
|
117
170
|
});
|
|
118
171
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
endpoint,
|
|
122
|
-
method,
|
|
123
|
-
expectedId: id,
|
|
124
|
-
receivedId: payload?.id
|
|
125
|
-
});
|
|
172
|
+
try {
|
|
173
|
+
return JSON.parse(body);
|
|
126
174
|
}
|
|
127
|
-
|
|
128
|
-
throw new AsturError(
|
|
175
|
+
catch (error) {
|
|
176
|
+
throw new AsturError('AGENT_RESPONSE_INVALID', `Native agent command ${method} returned invalid JSON.`, {
|
|
129
177
|
endpoint,
|
|
130
178
|
method,
|
|
131
|
-
|
|
132
|
-
diagnostics: payload.diagnostics,
|
|
133
|
-
timing: payload.timing
|
|
179
|
+
cause: stringifyUnknownError(error)
|
|
134
180
|
});
|
|
135
181
|
}
|
|
136
|
-
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* A 4xx that carries the agent's own error envelope is the agent refusing the
|
|
185
|
+
* request before running it (bad token, malformed body), so it is reported
|
|
186
|
+
* under the agent's code instead of as a transport failure of unknown outcome.
|
|
187
|
+
* A 5xx never is: the command may have been partway through.
|
|
188
|
+
*/
|
|
189
|
+
async function readRefusal(response) {
|
|
190
|
+
try {
|
|
191
|
+
const body = JSON.parse(await response.text());
|
|
192
|
+
if (body?.ok === false && body.executed === false && body.error?.code) {
|
|
193
|
+
return new AsturError(body.error.code, body.error.message, {
|
|
194
|
+
status: response.status,
|
|
195
|
+
executed: false
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Not an agent envelope; fall through to the generic transport failure.
|
|
201
|
+
}
|
|
202
|
+
return undefined;
|
|
137
203
|
}
|
|
138
204
|
function getGlobalFetch() {
|
|
139
205
|
return globalThis.fetch;
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { BrowserCapabilities, BrowserEngine, PlatformName, WebViewSelector } from '@astur-mobile/protocol';
|
|
2
|
+
import { WebContext, type WebEvaluator } from './webBridge.js';
|
|
3
|
+
/**
|
|
4
|
+
* Driving a browser as the target of a session, rather than an installed app.
|
|
5
|
+
*
|
|
6
|
+
* The DOM half of this is already solved: once a page is inspectable, the same
|
|
7
|
+
* injected-JS bridge that drives an in-app WebView drives a browser tab
|
|
8
|
+
* unchanged. What a browser adds is the target — launching it, finding the page
|
|
9
|
+
* it opened, and expressing navigation, which an in-app WebView never needed.
|
|
10
|
+
*
|
|
11
|
+
* Navigation deliberately re-resolves the page rather than reusing the open
|
|
12
|
+
* transport. Chromium keeps one target across a same-tab navigation and WebKit
|
|
13
|
+
* does not always, so holding the old handle works on Android and intermittently
|
|
14
|
+
* fails on iOS — which is the worst of both. Re-resolving costs a round trip and
|
|
15
|
+
* behaves the same everywhere.
|
|
16
|
+
*/
|
|
17
|
+
/** The stock browser for a platform, when the config does not name one. */
|
|
18
|
+
export declare function defaultBrowserEngine(platform: PlatformName): BrowserEngine;
|
|
19
|
+
/** The package/bundle id Astur launches for an engine, absent an override. */
|
|
20
|
+
export declare function defaultBrowserId(engine: BrowserEngine): string;
|
|
21
|
+
export declare function browserUnsupported(platform: PlatformName, reason: string): BrowserCapabilities;
|
|
22
|
+
/** How long to keep looking for the page a freshly launched browser opened. */
|
|
23
|
+
export declare const DEFAULT_PAGE_TIMEOUT_MS = 20000;
|
|
24
|
+
/**
|
|
25
|
+
* How long to look for an already-open tab before launching the browser.
|
|
26
|
+
*
|
|
27
|
+
* Short on purpose: when the browser is not running this is dead time on every
|
|
28
|
+
* `open()`, and when it is running a tab answers almost immediately.
|
|
29
|
+
*/
|
|
30
|
+
export declare const REUSE_PROBE_MS = 2500;
|
|
31
|
+
export interface BrowserPageOptions {
|
|
32
|
+
/** Where the page should end up. Used to pick the right tab, not to navigate. */
|
|
33
|
+
url?: string;
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
}
|
|
36
|
+
type EvaluatorFactory = (selector?: WebViewSelector) => Promise<WebEvaluator>;
|
|
37
|
+
/**
|
|
38
|
+
* Waits for an inspectable page and returns a context on it.
|
|
39
|
+
*
|
|
40
|
+
* A browser takes a moment to publish its debugging target after launch, and on
|
|
41
|
+
* a cold start rather longer than an already-running app's WebView — so this
|
|
42
|
+
* polls rather than asking once. The URL narrows *which tab*, and is matched on
|
|
43
|
+
* origin + path so a redirect, an added query string, or a trailing slash does
|
|
44
|
+
* not lose the page we just opened.
|
|
45
|
+
*/
|
|
46
|
+
export declare function connectBrowserPage(createEvaluator: EvaluatorFactory, options?: BrowserPageOptions): Promise<WebContext>;
|
|
47
|
+
export declare function pageMatcher(url: string): RegExp;
|
|
48
|
+
/**
|
|
49
|
+
* Runs a navigation and waits for the page to settle.
|
|
50
|
+
*
|
|
51
|
+
* The evaluate is expected to fail sometimes and that is not an error: the
|
|
52
|
+
* expression tears down the very JS context that would return its result, so a
|
|
53
|
+
* transport reporting "context destroyed" means the navigation started, not
|
|
54
|
+
* that it failed.
|
|
55
|
+
*/
|
|
56
|
+
export declare function runNavigation(page: WebContext, expression: string): Promise<void>;
|
|
57
|
+
/** Polls until the document has finished loading, or the budget runs out. */
|
|
58
|
+
export declare function waitForLoad(page: WebContext, timeoutMs: number): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* A session configured to drive a browser and nothing else.
|
|
61
|
+
*
|
|
62
|
+
* The distinction matters because such a session has no app to install and no
|
|
63
|
+
* native tree worth bootstrapping an agent for. A config that sets *both* is a
|
|
64
|
+
* suite doing each in turn, and keeps the full native setup.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isBrowserOnlySession(capabilities: {
|
|
67
|
+
app?: unknown;
|
|
68
|
+
browser?: unknown;
|
|
69
|
+
}): boolean;
|
|
70
|
+
/** The attached page's current URL, or undefined when the transport is gone. */
|
|
71
|
+
export declare function currentUrl(page: WebContext): Promise<string | undefined>;
|
|
72
|
+
export interface SettleOptions {
|
|
73
|
+
/** Token planted before navigating; its absence proves the document changed. */
|
|
74
|
+
token?: string;
|
|
75
|
+
/** Wait until the URL matches this. */
|
|
76
|
+
expectUrl?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Plants a token on the current document.
|
|
80
|
+
*
|
|
81
|
+
* Comparing URLs cannot tell a finished reload from one that has not started —
|
|
82
|
+
* the URL is identical either way, so a settle keyed on it returns immediately
|
|
83
|
+
* and hands back the *old* page. A token lives on `window`, so it disappears
|
|
84
|
+
* exactly when the document is replaced, which is the thing being waited for.
|
|
85
|
+
*/
|
|
86
|
+
export declare function markNavigation(page: WebContext): Promise<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Waits for a navigation on the *same* tab to finish.
|
|
89
|
+
*
|
|
90
|
+
* Returns false rather than throwing when the page never settles, so the caller
|
|
91
|
+
* can fall back to re-resolving instead of failing the test outright — WebKit
|
|
92
|
+
* does sometimes replace the inspector page across a navigation, where Chromium
|
|
93
|
+
* keeps it.
|
|
94
|
+
*/
|
|
95
|
+
export declare function settlePage(page: WebContext, timeoutMs: number, options?: SettleOptions): Promise<boolean>;
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIhH,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE/D;;;;;;;;;;;;;GAaG;AAEH,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,CAE1E;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAK9F;AAED,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,gBAAgB,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,gBAAgB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAkCD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/C;AAoBD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED,6EAA6E;AAC7E,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAEhG;AAED,gFAAgF;AAChF,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG9E;AAED,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAgClB"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { AsturError } from './errors.js';
|
|
2
|
+
import { delay } from './wait.js';
|
|
3
|
+
import { WebContext } from './webBridge.js';
|
|
4
|
+
/**
|
|
5
|
+
* Driving a browser as the target of a session, rather than an installed app.
|
|
6
|
+
*
|
|
7
|
+
* The DOM half of this is already solved: once a page is inspectable, the same
|
|
8
|
+
* injected-JS bridge that drives an in-app WebView drives a browser tab
|
|
9
|
+
* unchanged. What a browser adds is the target — launching it, finding the page
|
|
10
|
+
* it opened, and expressing navigation, which an in-app WebView never needed.
|
|
11
|
+
*
|
|
12
|
+
* Navigation deliberately re-resolves the page rather than reusing the open
|
|
13
|
+
* transport. Chromium keeps one target across a same-tab navigation and WebKit
|
|
14
|
+
* does not always, so holding the old handle works on Android and intermittently
|
|
15
|
+
* fails on iOS — which is the worst of both. Re-resolving costs a round trip and
|
|
16
|
+
* behaves the same everywhere.
|
|
17
|
+
*/
|
|
18
|
+
/** The stock browser for a platform, when the config does not name one. */
|
|
19
|
+
export function defaultBrowserEngine(platform) {
|
|
20
|
+
return platform === 'ios' ? 'safari' : 'chrome';
|
|
21
|
+
}
|
|
22
|
+
/** The package/bundle id Astur launches for an engine, absent an override. */
|
|
23
|
+
export function defaultBrowserId(engine) {
|
|
24
|
+
return engine === 'safari' ? 'com.apple.mobilesafari' : 'com.android.chrome';
|
|
25
|
+
}
|
|
26
|
+
export function browserUnsupported(platform, reason) {
|
|
27
|
+
return {
|
|
28
|
+
supported: false,
|
|
29
|
+
coverage: `${platform} cannot drive a browser in this session: ${reason}`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** How long to keep looking for the page a freshly launched browser opened. */
|
|
33
|
+
export const DEFAULT_PAGE_TIMEOUT_MS = 20_000;
|
|
34
|
+
/**
|
|
35
|
+
* How long to look for an already-open tab before launching the browser.
|
|
36
|
+
*
|
|
37
|
+
* Short on purpose: when the browser is not running this is dead time on every
|
|
38
|
+
* `open()`, and when it is running a tab answers almost immediately.
|
|
39
|
+
*/
|
|
40
|
+
export const REUSE_PROBE_MS = 2_500;
|
|
41
|
+
/**
|
|
42
|
+
* Waits for an inspectable page and returns a context on it.
|
|
43
|
+
*
|
|
44
|
+
* A browser takes a moment to publish its debugging target after launch, and on
|
|
45
|
+
* a cold start rather longer than an already-running app's WebView — so this
|
|
46
|
+
* polls rather than asking once. The URL narrows *which tab*, and is matched on
|
|
47
|
+
* origin + path so a redirect, an added query string, or a trailing slash does
|
|
48
|
+
* not lose the page we just opened.
|
|
49
|
+
*/
|
|
50
|
+
export async function connectBrowserPage(createEvaluator, options = {}) {
|
|
51
|
+
const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_PAGE_TIMEOUT_MS);
|
|
52
|
+
const selector = options.url
|
|
53
|
+
? { url: pageMatcher(options.url), newest: true, target: 'browser' }
|
|
54
|
+
: { newest: true, target: 'browser' };
|
|
55
|
+
// Hold out for the addressed tab for the whole budget. Falling back to "any
|
|
56
|
+
// inspectable page" early looks harmless and is not: a browser keeps previous
|
|
57
|
+
// tabs open, so the fallback fires on the first tick — before the tab we just
|
|
58
|
+
// navigated is ready — and silently attaches to a stale page. The test then
|
|
59
|
+
// fails on a missing element rather than on the wrong page, which is a much
|
|
60
|
+
// worse thing to debug.
|
|
61
|
+
while (Date.now() < deadline) {
|
|
62
|
+
const attached = await tryAttach(createEvaluator, selector);
|
|
63
|
+
if (attached) {
|
|
64
|
+
return attached;
|
|
65
|
+
}
|
|
66
|
+
await delay(400);
|
|
67
|
+
}
|
|
68
|
+
// Only now, and only once: a redirect can legitimately land on a URL the
|
|
69
|
+
// matcher cannot predict, and the browser under test is still the right one.
|
|
70
|
+
if (selector) {
|
|
71
|
+
const attached = await tryAttach(createEvaluator, { newest: true, target: 'browser' });
|
|
72
|
+
if (attached) {
|
|
73
|
+
return attached;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
throw new AsturError('BROWSER_PAGE_NOT_FOUND', `No inspectable browser page appeared${options.url ? ` for ${options.url}` : ''} within `
|
|
77
|
+
+ `${options.timeoutMs ?? DEFAULT_PAGE_TIMEOUT_MS}ms. `
|
|
78
|
+
+ 'Check that remote debugging is reachable: on Android the device needs USB debugging on, '
|
|
79
|
+
+ 'and on a real iOS device Settings > Safari > Advanced > Web Inspector must be enabled.');
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Matches a page by origin and path, ignoring query and fragment.
|
|
83
|
+
*
|
|
84
|
+
* Anything stricter loses the page to a redirect or an appended tracking
|
|
85
|
+
* parameter; anything looser matches an unrelated tab.
|
|
86
|
+
*/
|
|
87
|
+
/**
|
|
88
|
+
* One attempt at an inspectable, *usable* page.
|
|
89
|
+
*
|
|
90
|
+
* Connecting is not the same as being usable: mid-navigation a browser hands
|
|
91
|
+
* out a target whose document is being torn down, and every locator against it
|
|
92
|
+
* reports "no element matched" — which reads like a broken selector rather than
|
|
93
|
+
* a page that was not ready. Probing the document separates the two.
|
|
94
|
+
*/
|
|
95
|
+
async function tryAttach(createEvaluator, selector) {
|
|
96
|
+
let context;
|
|
97
|
+
try {
|
|
98
|
+
context = new WebContext(await createEvaluator(selector));
|
|
99
|
+
if (await context.evaluate('document.readyState').catch(() => undefined)) {
|
|
100
|
+
return context;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Fall through: the caller keeps polling until its deadline.
|
|
105
|
+
}
|
|
106
|
+
await context?.close().catch(() => undefined);
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
export function pageMatcher(url) {
|
|
110
|
+
const parsed = tryParseHttpUrl(url);
|
|
111
|
+
if (!parsed) {
|
|
112
|
+
// Not an absolute http(s) URL — a bare `host:port`, or a fragment of one.
|
|
113
|
+
// Match it as a substring rather than anchoring on an origin we do not have.
|
|
114
|
+
return new RegExp(escapeRegExp(url));
|
|
115
|
+
}
|
|
116
|
+
const path = parsed.pathname.replace(/\/$/, '');
|
|
117
|
+
return new RegExp(`^${escapeRegExp(parsed.origin)}${escapeRegExp(path)}/?(?:[?#].*)?$`);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* `new URL()` accepts far more than a web address — `localhost:4319` parses as
|
|
121
|
+
* scheme `localhost:` with a null origin, which would build a matcher that can
|
|
122
|
+
* never match. Only an http(s) URL gives an origin worth anchoring on.
|
|
123
|
+
*/
|
|
124
|
+
function tryParseHttpUrl(url) {
|
|
125
|
+
try {
|
|
126
|
+
const parsed = new URL(url);
|
|
127
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:' ? parsed : undefined;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function escapeRegExp(value) {
|
|
134
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Runs a navigation and waits for the page to settle.
|
|
138
|
+
*
|
|
139
|
+
* The evaluate is expected to fail sometimes and that is not an error: the
|
|
140
|
+
* expression tears down the very JS context that would return its result, so a
|
|
141
|
+
* transport reporting "context destroyed" means the navigation started, not
|
|
142
|
+
* that it failed.
|
|
143
|
+
*/
|
|
144
|
+
export async function runNavigation(page, expression) {
|
|
145
|
+
await page.evaluate(expression).catch(() => undefined);
|
|
146
|
+
}
|
|
147
|
+
/** Polls until the document has finished loading, or the budget runs out. */
|
|
148
|
+
export async function waitForLoad(page, timeoutMs) {
|
|
149
|
+
const deadline = Date.now() + timeoutMs;
|
|
150
|
+
while (Date.now() < deadline) {
|
|
151
|
+
const state = await page.evaluate('document.readyState').catch(() => undefined);
|
|
152
|
+
if (state === 'complete') {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
await delay(150);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* A session configured to drive a browser and nothing else.
|
|
160
|
+
*
|
|
161
|
+
* The distinction matters because such a session has no app to install and no
|
|
162
|
+
* native tree worth bootstrapping an agent for. A config that sets *both* is a
|
|
163
|
+
* suite doing each in turn, and keeps the full native setup.
|
|
164
|
+
*/
|
|
165
|
+
export function isBrowserOnlySession(capabilities) {
|
|
166
|
+
return Boolean(capabilities.browser) && !capabilities.app;
|
|
167
|
+
}
|
|
168
|
+
/** The attached page's current URL, or undefined when the transport is gone. */
|
|
169
|
+
export async function currentUrl(page) {
|
|
170
|
+
const href = await page.evaluate('location.href').catch(() => undefined);
|
|
171
|
+
return typeof href === 'string' ? href : undefined;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Plants a token on the current document.
|
|
175
|
+
*
|
|
176
|
+
* Comparing URLs cannot tell a finished reload from one that has not started —
|
|
177
|
+
* the URL is identical either way, so a settle keyed on it returns immediately
|
|
178
|
+
* and hands back the *old* page. A token lives on `window`, so it disappears
|
|
179
|
+
* exactly when the document is replaced, which is the thing being waited for.
|
|
180
|
+
*/
|
|
181
|
+
export async function markNavigation(page) {
|
|
182
|
+
const token = `astur-nav-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
183
|
+
await page.evaluate(`window.__asturNavToken = ${JSON.stringify(token)}`).catch(() => undefined);
|
|
184
|
+
return token;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Waits for a navigation on the *same* tab to finish.
|
|
188
|
+
*
|
|
189
|
+
* Returns false rather than throwing when the page never settles, so the caller
|
|
190
|
+
* can fall back to re-resolving instead of failing the test outright — WebKit
|
|
191
|
+
* does sometimes replace the inspector page across a navigation, where Chromium
|
|
192
|
+
* keeps it.
|
|
193
|
+
*/
|
|
194
|
+
export async function settlePage(page, timeoutMs, options = {}) {
|
|
195
|
+
const deadline = Date.now() + timeoutMs;
|
|
196
|
+
const expected = options.expectUrl ? pageMatcher(options.expectUrl) : undefined;
|
|
197
|
+
let unreachable = 0;
|
|
198
|
+
while (Date.now() < deadline) {
|
|
199
|
+
const href = await currentUrl(page);
|
|
200
|
+
if (href === undefined) {
|
|
201
|
+
// WebKit replaces the inspector page across a navigation where Chromium
|
|
202
|
+
// keeps it, so on iOS this transport is simply gone. Waiting out the full
|
|
203
|
+
// budget on a dead socket turns a fast reconnect into a 20-second stall,
|
|
204
|
+
// so give up early and let the caller re-resolve.
|
|
205
|
+
if (++unreachable >= TRANSPORT_LOST_POLLS) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
unreachable = 0;
|
|
211
|
+
const stillOldDocument = options.token !== undefined
|
|
212
|
+
&& await page.evaluate('window.__asturNavToken').catch(() => undefined) === options.token;
|
|
213
|
+
if (!stillOldDocument
|
|
214
|
+
&& (!expected || expected.test(href))
|
|
215
|
+
&& await page.evaluate('document.readyState').catch(() => undefined) === 'complete') {
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
await delay(200);
|
|
220
|
+
}
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Consecutive failed probes (~3s) before a transport counts as gone.
|
|
225
|
+
*
|
|
226
|
+
* Tuned between two real behaviours rather than picked round: Chromium drops the
|
|
227
|
+
* JS context only while a document is swapping, for well under a second, and
|
|
228
|
+
* bailing on that blip sends a healthy navigation down the re-resolve path where
|
|
229
|
+
* it can attach to a stale tab. WebKit's loss is permanent, so anything past a
|
|
230
|
+
* few seconds is not coming back.
|
|
231
|
+
*/
|
|
232
|
+
const TRANSPORT_LOST_POLLS = 15;
|
|
233
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,WAAW,EAGX,sBAAsB,EAGvB,MAAM,wBAAwB,CAAC;AAGhC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,WAAW,EAGX,sBAAsB,EAGvB,MAAM,wBAAwB,CAAC;AAGhC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,CAkBjF;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAmBjC"}
|
package/dist/config.js
CHANGED
|
@@ -12,6 +12,7 @@ export function normalizeCapabilities(config) {
|
|
|
12
12
|
platform: config.platform,
|
|
13
13
|
device: config.device ?? {},
|
|
14
14
|
app: normalizeApp(config.app),
|
|
15
|
+
...(config.browser ? { browser: config.browser } : {}),
|
|
15
16
|
timeout: config.timeout ?? 10_000,
|
|
16
17
|
artifactsDir: config.artifactsDir ?? 'test-results/astur',
|
|
17
18
|
artifacts: config.artifacts ?? {},
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
|