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;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CtF;AAED;;GAEG;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,CAgCD"}
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 (config.networkLatency || config.blockUrls || config.failApis) {
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
- await applyChaos(browser, chaos);
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;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAiB,EAAE,MAAmB;IACrE,MAAM,OAAO,GAAG,MAAO,OAAe,CAAC,OAAO,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAO,OAAe,CAAC,OAAO,EAAE,CAAC;IAE9C,qBAAqB;IACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjE,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;YAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC;YAElC,aAAa;YACb,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,qBAAqB;YACrB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC,OAAO,CAAC;oBAClB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,0BAA0B;iBACpD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,cAAc;YACd,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,gBAAgB;YAChB,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAiB,EACjB,GAAW,EACX,KAAkB,EAClB,UAAoB,EAAE;IAOtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,kBAAkB;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAE9C,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC3B,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;AACH,CAAC"}
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.0",
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",