cbrowser 9.5.0 → 9.5.2
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.
|
@@ -27,10 +27,12 @@ export interface ChaosConfig {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Apply chaos engineering conditions to browser.
|
|
30
|
+
* Returns a cleanup function that restores original state.
|
|
30
31
|
*/
|
|
31
|
-
export declare function applyChaos(browser: CBrowser, config: ChaosConfig): Promise<void
|
|
32
|
+
export declare function applyChaos(browser: CBrowser, config: ChaosConfig): Promise<() => Promise<void>>;
|
|
32
33
|
/**
|
|
33
34
|
* Run chaos test - apply conditions and verify app resilience.
|
|
35
|
+
* Always cleans up chaos conditions after test completes (success or failure).
|
|
34
36
|
*/
|
|
35
37
|
export declare function runChaosTest(browser: CBrowser, url: string, chaos: ChaosConfig, actions?: string[]): Promise<{
|
|
36
38
|
passed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-testing.d.ts","sourceRoot":"","sources":["../../src/analysis/chaos-testing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED
|
|
1
|
+
{"version":3,"file":"chaos-testing.d.ts","sourceRoot":"","sources":["../../src/analysis/chaos-testing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA6DrG;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,MAAM,EAAO,GACrB,OAAO,CAAC;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAuCD"}
|
|
@@ -9,16 +9,20 @@
|
|
|
9
9
|
import { executeNaturalLanguage } from "./natural-language.js";
|
|
10
10
|
/**
|
|
11
11
|
* Apply chaos engineering conditions to browser.
|
|
12
|
+
* Returns a cleanup function that restores original state.
|
|
12
13
|
*/
|
|
13
14
|
export async function applyChaos(browser, config) {
|
|
14
15
|
const context = await browser.context;
|
|
15
16
|
const page = await browser.getPage();
|
|
17
|
+
// Track what we modified for cleanup
|
|
18
|
+
const wasOffline = config.offline;
|
|
19
|
+
const hadRoutes = config.networkLatency || config.blockUrls || config.failApis;
|
|
16
20
|
// Network conditions
|
|
17
21
|
if (config.offline) {
|
|
18
22
|
await context.setOffline(true);
|
|
19
23
|
}
|
|
20
24
|
// Route interception for latency/failures
|
|
21
|
-
if (
|
|
25
|
+
if (hadRoutes) {
|
|
22
26
|
await page.route("**/*", async (route) => {
|
|
23
27
|
const url = route.request().url();
|
|
24
28
|
// Block URLs
|
|
@@ -46,15 +50,32 @@ export async function applyChaos(browser, config) {
|
|
|
46
50
|
await route.continue();
|
|
47
51
|
});
|
|
48
52
|
}
|
|
53
|
+
// Return cleanup function to restore original state
|
|
54
|
+
return async () => {
|
|
55
|
+
try {
|
|
56
|
+
if (wasOffline) {
|
|
57
|
+
await context.setOffline(false);
|
|
58
|
+
}
|
|
59
|
+
if (hadRoutes) {
|
|
60
|
+
await page.unroute("**/*");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Context may be closed, ignore cleanup errors
|
|
65
|
+
}
|
|
66
|
+
};
|
|
49
67
|
}
|
|
50
68
|
/**
|
|
51
69
|
* Run chaos test - apply conditions and verify app resilience.
|
|
70
|
+
* Always cleans up chaos conditions after test completes (success or failure).
|
|
52
71
|
*/
|
|
53
72
|
export async function runChaosTest(browser, url, chaos, actions = []) {
|
|
54
73
|
const startTime = Date.now();
|
|
55
74
|
const errors = [];
|
|
75
|
+
let cleanup = null;
|
|
56
76
|
try {
|
|
57
|
-
|
|
77
|
+
// Apply chaos and get cleanup function
|
|
78
|
+
cleanup = await applyChaos(browser, chaos);
|
|
58
79
|
await browser.navigate(url);
|
|
59
80
|
// Execute actions
|
|
60
81
|
for (const action of actions) {
|
|
@@ -79,5 +100,11 @@ export async function runChaosTest(browser, url, chaos, actions = []) {
|
|
|
79
100
|
screenshot: "",
|
|
80
101
|
};
|
|
81
102
|
}
|
|
103
|
+
finally {
|
|
104
|
+
// CRITICAL: Always restore network state after chaos test
|
|
105
|
+
if (cleanup) {
|
|
106
|
+
await cleanup();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
82
109
|
}
|
|
83
110
|
//# sourceMappingURL=chaos-testing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-testing.js","sourceRoot":"","sources":["../../src/analysis/chaos-testing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAiB/D
|
|
1
|
+
{"version":3,"file":"chaos-testing.js","sourceRoot":"","sources":["../../src/analysis/chaos-testing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cbrowser",
|
|
3
|
-
"version": "9.5.
|
|
3
|
+
"version": "9.5.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Cognitive browser automation that thinks like your users. Simulate real user cognition with abandonment detection, constitutional safety, chaos engineering, and UX friction discovery.",
|
|
6
6
|
"main": "dist/index.js",
|