cbrowser 6.2.0 β 6.3.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 +154 -4
- package/dist/browser.d.ts +22 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +323 -0
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +66 -2
- package/dist/cli.js.map +1 -1
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +15 -19
package/README.md
CHANGED
|
@@ -1,11 +1,66 @@
|
|
|
1
1
|
# CBrowser
|
|
2
2
|
|
|
3
|
-
**The
|
|
3
|
+
**The only browser automation that asks: "Can a real user complete this safely?"**
|
|
4
|
+
|
|
5
|
+
Most AI automation tools ask if a task *can* be completed. CBrowser asks if an **elderly first-timer on mobile** can complete itβand whether the automation should even be allowed to try.
|
|
4
6
|
|
|
5
7
|
[](https://www.npmjs.com/package/cbrowser)
|
|
6
8
|
[](https://opensource.org/licenses/MIT)
|
|
7
9
|
|
|
8
|
-
##
|
|
10
|
+
## Why CBrowser Exists
|
|
11
|
+
|
|
12
|
+
Every AI browser tool now has self-healing selectors and natural language commands. That's table stakes.
|
|
13
|
+
|
|
14
|
+
**CBrowser solves three problems no one else does:**
|
|
15
|
+
|
|
16
|
+
### 1. Constitutional AI Safety (No One Else Has This)
|
|
17
|
+
|
|
18
|
+
Other tools will happily click "Delete All Data" or "Transfer $10,000" if you ask. CBrowser classifies every action by risk:
|
|
19
|
+
|
|
20
|
+
| Zone | Actions | Behavior |
|
|
21
|
+
|------|---------|----------|
|
|
22
|
+
| π’ **Green** | Navigate, read, screenshot | Auto-execute |
|
|
23
|
+
| π‘ **Yellow** | Click buttons, fill forms | Log and proceed |
|
|
24
|
+
| π΄ **Red** | Submit, delete, purchase | **Requires verification** |
|
|
25
|
+
| β¬ **Black** | Bypass auth, inject scripts | **Never executes** |
|
|
26
|
+
|
|
27
|
+
This isn't just guardrailsβit's the only AI browser automation with built-in ethical boundaries.
|
|
28
|
+
|
|
29
|
+
### 2. User Perspective Testing (Not Just "Does It Work?")
|
|
30
|
+
|
|
31
|
+
Other tools test if buttons click. CBrowser tests if **real humans** can use your site:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx cbrowser compare-personas \
|
|
35
|
+
--start "https://your-site.com" \
|
|
36
|
+
--goal "Complete checkout" \
|
|
37
|
+
--personas power-user,elderly-user,mobile-user
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Each persona has realistic human behavior: reaction times, typo rates, mouse jitter, attention patterns. You'll discover that your checkout works fine for developers but fails for 40% of real users.
|
|
41
|
+
|
|
42
|
+
### 3. Claude-Native MCP Integration
|
|
43
|
+
|
|
44
|
+
Built for the Claude ecosystem. Add to Claude Desktop and get browser automation as a native capabilityβno API keys, no external services, no vendor lock-in.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Feature Comparison
|
|
49
|
+
|
|
50
|
+
| Feature | CBrowser | Skyvern | Browser-Use | Testim |
|
|
51
|
+
|---------|:--------:|:-------:|:-----------:|:------:|
|
|
52
|
+
| Self-healing selectors | β
| β
| β
| β
|
|
|
53
|
+
| Natural language | β
| β
| β
| β οΈ |
|
|
54
|
+
| **Constitutional safety zones** | β
| β | β | β |
|
|
55
|
+
| **Multi-persona comparison** | β
| β | β | β |
|
|
56
|
+
| **Human behavior simulation** | β
| β | β | β |
|
|
57
|
+
| **Claude MCP server** | β
| β | β | β |
|
|
58
|
+
| Flaky test detection | β
| β | β | β
|
|
|
59
|
+
| AI test repair | β
| β | β | β οΈ |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Also Included (Table Stakes)
|
|
9
64
|
|
|
10
65
|
| Traditional Automation | CBrowser |
|
|
11
66
|
|------------------------|----------|
|
|
@@ -15,8 +70,6 @@
|
|
|
15
70
|
| Manual test assertions | **Natural language assertions** |
|
|
16
71
|
| Scripted tests only | **AI test generation** from page analysis |
|
|
17
72
|
| Stateless between runs | Persistent sessions, cookies, localStorage |
|
|
18
|
-
| No user context | Personas with goals, behaviors, limitations |
|
|
19
|
-
| Standalone tool | **MCP Server** for Claude integration |
|
|
20
73
|
|
|
21
74
|
## Quick Start
|
|
22
75
|
|
|
@@ -166,6 +219,103 @@ for (const testResult of result.testResults) {
|
|
|
166
219
|
}
|
|
167
220
|
```
|
|
168
221
|
|
|
222
|
+
## v6.3.0 Features
|
|
223
|
+
|
|
224
|
+
### Flaky Test Detection
|
|
225
|
+
|
|
226
|
+
Identify unreliable tests by running them multiple times and analyzing consistency:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Run tests 5 times (default) and detect flakiness
|
|
230
|
+
npx cbrowser flaky-check tests.txt
|
|
231
|
+
|
|
232
|
+
# Custom number of runs
|
|
233
|
+
npx cbrowser flaky-check tests.txt --runs 10
|
|
234
|
+
|
|
235
|
+
# Set custom flakiness threshold (default: 20%)
|
|
236
|
+
npx cbrowser flaky-check tests.txt --threshold 30
|
|
237
|
+
|
|
238
|
+
# Save report to file
|
|
239
|
+
npx cbrowser flaky-check tests.txt --output flaky-report.json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**What it measures:**
|
|
243
|
+
|
|
244
|
+
| Metric | Description |
|
|
245
|
+
|--------|-------------|
|
|
246
|
+
| **Flakiness Score** | 0% = perfectly stable, 100% = maximally flaky (50/50 pass/fail) |
|
|
247
|
+
| **Classification** | `stable_pass`, `stable_fail`, `flaky`, `mostly_pass`, `mostly_fail` |
|
|
248
|
+
| **Per-Step Analysis** | Identifies which specific steps are unreliable |
|
|
249
|
+
| **Duration Variance** | Detects timing-sensitive tests |
|
|
250
|
+
|
|
251
|
+
**Example output:**
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
π FLAKY TEST DETECTION REPORT
|
|
255
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
256
|
+
|
|
257
|
+
π Suite: Login Tests
|
|
258
|
+
Runs per test: 5
|
|
259
|
+
Total duration: 45.2s
|
|
260
|
+
|
|
261
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
262
|
+
TEST RESULTS
|
|
263
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
264
|
+
|
|
265
|
+
β
STABLE_PASS (5/5 passed, flakiness: 0%)
|
|
266
|
+
Login Flow
|
|
267
|
+
ββ Avg duration: 2.1s (Β±0.1s)
|
|
268
|
+
|
|
269
|
+
β οΈ FLAKY (3/5 passed, flakiness: 80%)
|
|
270
|
+
Search Functionality
|
|
271
|
+
ββ Avg duration: 3.5s (Β±1.2s)
|
|
272
|
+
ββ Flaky steps:
|
|
273
|
+
β’ wait for "Loading" appears (60% flaky)
|
|
274
|
+
β’ verify page contains "results" (40% flaky)
|
|
275
|
+
|
|
276
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
277
|
+
π SUMMARY
|
|
278
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
279
|
+
|
|
280
|
+
β
Overall Flakiness: 40%
|
|
281
|
+
Stable tests: 1 | Flaky tests: 1
|
|
282
|
+
|
|
283
|
+
β οΈ Most flaky test: Search Functionality (80%)
|
|
284
|
+
β οΈ Most flaky step: wait for "Loading" appears (60%)
|
|
285
|
+
|
|
286
|
+
π‘ RECOMMENDATIONS
|
|
287
|
+
β’ Search Functionality: Add explicit waits, increase timeout
|
|
288
|
+
β’ wait for "Loading" appears: Use more specific selector
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**API usage:**
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
import { parseNLTestSuite, detectFlakyTests, formatFlakyTestReport } from 'cbrowser';
|
|
295
|
+
|
|
296
|
+
const suite = parseNLTestSuite(testContent, "My Tests");
|
|
297
|
+
|
|
298
|
+
const result = await detectFlakyTests(suite, {
|
|
299
|
+
runs: 10,
|
|
300
|
+
flakinessThreshold: 25,
|
|
301
|
+
delayBetweenRuns: 1000,
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
console.log(formatFlakyTestReport(result));
|
|
305
|
+
|
|
306
|
+
// Access detailed analysis
|
|
307
|
+
for (const test of result.testAnalyses) {
|
|
308
|
+
if (test.isFlaky) {
|
|
309
|
+
console.log(`${test.testName}: ${test.flakinessScore}% flaky`);
|
|
310
|
+
for (const step of test.stepAnalysis) {
|
|
311
|
+
if (step.isFlaky) {
|
|
312
|
+
console.log(` ββ ${step.instruction}: ${step.flakinessScore}% flaky`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
169
319
|
## v6.1.0 Features
|
|
170
320
|
|
|
171
321
|
### Natural Language Test Suites
|
package/dist/browser.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* AI-powered browser automation with constitutional safety.
|
|
5
5
|
*/
|
|
6
6
|
import { type CBrowserConfig } from "./config.js";
|
|
7
|
-
import type { SavedSession, NavigationResult, ClickResult, ExtractResult, JourneyResult, CleanupOptions, CleanupResult, JourneyOptions, NetworkMock, NetworkRequest, PerformanceMetrics, PerformanceAuditResult, SmartRetryResult, AssertionResult, SelectorCacheEntry, SelectorCacheStats, PageAnalysis, TestGenerationResult, PersonaComparisonResult, NLTestStep, NLTestCase, NLTestSuiteResult, TestRepairResult, TestRepairSuiteResult } from "./types.js";
|
|
7
|
+
import type { SavedSession, NavigationResult, ClickResult, ExtractResult, JourneyResult, CleanupOptions, CleanupResult, JourneyOptions, NetworkMock, NetworkRequest, PerformanceMetrics, PerformanceAuditResult, SmartRetryResult, AssertionResult, SelectorCacheEntry, SelectorCacheStats, PageAnalysis, TestGenerationResult, PersonaComparisonResult, NLTestStep, NLTestCase, NLTestSuiteResult, TestRepairResult, TestRepairSuiteResult, FlakyTestSuiteResult } from "./types.js";
|
|
8
8
|
export declare class CBrowser {
|
|
9
9
|
private config;
|
|
10
10
|
private paths;
|
|
@@ -658,4 +658,25 @@ export declare function formatRepairReport(result: TestRepairSuiteResult): strin
|
|
|
658
658
|
* Export repaired test to file.
|
|
659
659
|
*/
|
|
660
660
|
export declare function exportRepairedTest(result: TestRepairResult): string;
|
|
661
|
+
export interface FlakyTestOptions {
|
|
662
|
+
/** Number of times to run each test (default: 5) */
|
|
663
|
+
runs?: number;
|
|
664
|
+
/** Run headless */
|
|
665
|
+
headless?: boolean;
|
|
666
|
+
/** Flakiness threshold to flag a test (default: 20) */
|
|
667
|
+
flakinessThreshold?: number;
|
|
668
|
+
/** Delay between runs in ms (default: 500) */
|
|
669
|
+
delayBetweenRuns?: number;
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Run flaky test detection on a test suite.
|
|
673
|
+
*/
|
|
674
|
+
export declare function detectFlakyTests(suite: {
|
|
675
|
+
name: string;
|
|
676
|
+
tests: NLTestCase[];
|
|
677
|
+
}, options?: FlakyTestOptions): Promise<FlakyTestSuiteResult>;
|
|
678
|
+
/**
|
|
679
|
+
* Format a flaky test report.
|
|
680
|
+
*/
|
|
681
|
+
export declare function formatFlakyTestReport(result: FlakyTestSuiteResult): string;
|
|
661
682
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.js
CHANGED
|
@@ -25,6 +25,8 @@ exports.repairTest = repairTest;
|
|
|
25
25
|
exports.repairTestSuite = repairTestSuite;
|
|
26
26
|
exports.formatRepairReport = formatRepairReport;
|
|
27
27
|
exports.exportRepairedTest = exportRepairedTest;
|
|
28
|
+
exports.detectFlakyTests = detectFlakyTests;
|
|
29
|
+
exports.formatFlakyTestReport = formatFlakyTestReport;
|
|
28
30
|
const playwright_1 = require("playwright");
|
|
29
31
|
const fs_1 = require("fs");
|
|
30
32
|
const path_1 = require("path");
|
|
@@ -3818,4 +3820,325 @@ function exportRepairedTest(result) {
|
|
|
3818
3820
|
}
|
|
3819
3821
|
return lines.join("\n");
|
|
3820
3822
|
}
|
|
3823
|
+
/**
|
|
3824
|
+
* Calculate flakiness score.
|
|
3825
|
+
* 0 = completely stable (all same result)
|
|
3826
|
+
* 100 = maximally flaky (50% pass, 50% fail)
|
|
3827
|
+
*/
|
|
3828
|
+
function calculateFlakinessScore(passCount, failCount) {
|
|
3829
|
+
const total = passCount + failCount;
|
|
3830
|
+
if (total === 0)
|
|
3831
|
+
return 0;
|
|
3832
|
+
const passRate = passCount / total;
|
|
3833
|
+
// Flakiness is maximized at 50% pass rate
|
|
3834
|
+
// Score = 1 - |passRate - 0.5| * 2, scaled to 0-100
|
|
3835
|
+
const flakiness = (1 - Math.abs(passRate - 0.5) * 2) * 100;
|
|
3836
|
+
return Math.round(flakiness);
|
|
3837
|
+
}
|
|
3838
|
+
/**
|
|
3839
|
+
* Classify a test based on its results.
|
|
3840
|
+
*/
|
|
3841
|
+
function classifyTest(passCount, failCount) {
|
|
3842
|
+
const total = passCount + failCount;
|
|
3843
|
+
if (total === 0)
|
|
3844
|
+
return "stable_pass";
|
|
3845
|
+
const passRate = passCount / total;
|
|
3846
|
+
if (passRate === 1)
|
|
3847
|
+
return "stable_pass";
|
|
3848
|
+
if (passRate === 0)
|
|
3849
|
+
return "stable_fail";
|
|
3850
|
+
if (passRate >= 0.8)
|
|
3851
|
+
return "mostly_pass";
|
|
3852
|
+
if (passRate <= 0.2)
|
|
3853
|
+
return "mostly_fail";
|
|
3854
|
+
return "flaky";
|
|
3855
|
+
}
|
|
3856
|
+
/**
|
|
3857
|
+
* Run a single test once and return the result.
|
|
3858
|
+
*/
|
|
3859
|
+
async function runTestOnce(test, runNumber, headless) {
|
|
3860
|
+
const browser = new CBrowser({ headless });
|
|
3861
|
+
const stepResults = [];
|
|
3862
|
+
let testPassed = true;
|
|
3863
|
+
let testError;
|
|
3864
|
+
const startTime = Date.now();
|
|
3865
|
+
try {
|
|
3866
|
+
await browser.launch();
|
|
3867
|
+
for (const step of test.steps) {
|
|
3868
|
+
let stepPassed = true;
|
|
3869
|
+
let stepError;
|
|
3870
|
+
try {
|
|
3871
|
+
switch (step.action) {
|
|
3872
|
+
case "navigate":
|
|
3873
|
+
await browser.navigate(step.target || "");
|
|
3874
|
+
break;
|
|
3875
|
+
case "click":
|
|
3876
|
+
const clickResult = await browser.smartClick(step.target || "");
|
|
3877
|
+
if (!clickResult.success) {
|
|
3878
|
+
stepPassed = false;
|
|
3879
|
+
stepError = `Failed to click: ${step.target}`;
|
|
3880
|
+
}
|
|
3881
|
+
break;
|
|
3882
|
+
case "fill":
|
|
3883
|
+
await browser.fill(step.target || "", step.value || "");
|
|
3884
|
+
break;
|
|
3885
|
+
case "assert":
|
|
3886
|
+
const assertResult = await browser.assert(step.instruction);
|
|
3887
|
+
stepPassed = assertResult.passed;
|
|
3888
|
+
if (!assertResult.passed) {
|
|
3889
|
+
stepError = assertResult.message;
|
|
3890
|
+
}
|
|
3891
|
+
break;
|
|
3892
|
+
case "wait":
|
|
3893
|
+
if (!step.target) {
|
|
3894
|
+
const ms = parseFloat(step.value || "1") * 1000;
|
|
3895
|
+
await new Promise((r) => setTimeout(r, ms));
|
|
3896
|
+
}
|
|
3897
|
+
else {
|
|
3898
|
+
const page = browser.page;
|
|
3899
|
+
if (page) {
|
|
3900
|
+
await page.waitForSelector(`text=${step.target}`, { timeout: 10000 });
|
|
3901
|
+
}
|
|
3902
|
+
}
|
|
3903
|
+
break;
|
|
3904
|
+
case "scroll":
|
|
3905
|
+
const direction = step.target?.toLowerCase() === "up" ? -500 : 500;
|
|
3906
|
+
const page = browser.page;
|
|
3907
|
+
if (page) {
|
|
3908
|
+
await page.evaluate((d) => window.scrollBy(0, d), direction);
|
|
3909
|
+
}
|
|
3910
|
+
break;
|
|
3911
|
+
case "screenshot":
|
|
3912
|
+
await browser.screenshot();
|
|
3913
|
+
break;
|
|
3914
|
+
default:
|
|
3915
|
+
const unknownResult = await browser.smartClick(step.target || step.instruction);
|
|
3916
|
+
if (!unknownResult.success) {
|
|
3917
|
+
stepPassed = false;
|
|
3918
|
+
stepError = `Could not interpret: ${step.instruction}`;
|
|
3919
|
+
}
|
|
3920
|
+
}
|
|
3921
|
+
}
|
|
3922
|
+
catch (e) {
|
|
3923
|
+
stepPassed = false;
|
|
3924
|
+
stepError = e.message;
|
|
3925
|
+
}
|
|
3926
|
+
stepResults.push({
|
|
3927
|
+
instruction: step.instruction,
|
|
3928
|
+
passed: stepPassed,
|
|
3929
|
+
error: stepError,
|
|
3930
|
+
});
|
|
3931
|
+
if (!stepPassed) {
|
|
3932
|
+
testPassed = false;
|
|
3933
|
+
testError = testError || stepError;
|
|
3934
|
+
}
|
|
3935
|
+
}
|
|
3936
|
+
}
|
|
3937
|
+
catch (e) {
|
|
3938
|
+
testPassed = false;
|
|
3939
|
+
testError = e.message;
|
|
3940
|
+
}
|
|
3941
|
+
finally {
|
|
3942
|
+
await browser.close();
|
|
3943
|
+
}
|
|
3944
|
+
return {
|
|
3945
|
+
runNumber,
|
|
3946
|
+
passed: testPassed,
|
|
3947
|
+
duration: Date.now() - startTime,
|
|
3948
|
+
error: testError,
|
|
3949
|
+
stepResults,
|
|
3950
|
+
};
|
|
3951
|
+
}
|
|
3952
|
+
/**
|
|
3953
|
+
* Analyze a test for flakiness by running it multiple times.
|
|
3954
|
+
*/
|
|
3955
|
+
async function analyzeTestFlakiness(test, options) {
|
|
3956
|
+
const { runs = 5, headless = true, flakinessThreshold = 20, delayBetweenRuns = 500, } = options;
|
|
3957
|
+
const testRuns = [];
|
|
3958
|
+
console.log(`\n π Running ${runs} times...`);
|
|
3959
|
+
for (let i = 1; i <= runs; i++) {
|
|
3960
|
+
const result = await runTestOnce(test, i, headless);
|
|
3961
|
+
testRuns.push(result);
|
|
3962
|
+
const icon = result.passed ? "β" : "β";
|
|
3963
|
+
console.log(` Run ${i}: ${icon} (${result.duration}ms)`);
|
|
3964
|
+
if (i < runs && delayBetweenRuns > 0) {
|
|
3965
|
+
await new Promise((r) => setTimeout(r, delayBetweenRuns));
|
|
3966
|
+
}
|
|
3967
|
+
}
|
|
3968
|
+
// Calculate overall stats
|
|
3969
|
+
const passCount = testRuns.filter((r) => r.passed).length;
|
|
3970
|
+
const failCount = testRuns.filter((r) => !r.passed).length;
|
|
3971
|
+
const flakinessScore = calculateFlakinessScore(passCount, failCount);
|
|
3972
|
+
const classification = classifyTest(passCount, failCount);
|
|
3973
|
+
const isFlaky = flakinessScore >= flakinessThreshold;
|
|
3974
|
+
// Calculate duration stats
|
|
3975
|
+
const durations = testRuns.map((r) => r.duration);
|
|
3976
|
+
const avgDuration = durations.reduce((a, b) => a + b, 0) / durations.length;
|
|
3977
|
+
const variance = Math.sqrt(durations.reduce((sum, d) => sum + Math.pow(d - avgDuration, 2), 0) / durations.length);
|
|
3978
|
+
// Analyze per-step flakiness
|
|
3979
|
+
const stepAnalysis = [];
|
|
3980
|
+
for (let stepIdx = 0; stepIdx < test.steps.length; stepIdx++) {
|
|
3981
|
+
const step = test.steps[stepIdx];
|
|
3982
|
+
const stepResults = testRuns.map((r) => r.stepResults[stepIdx]).filter(Boolean);
|
|
3983
|
+
const stepPassCount = stepResults.filter((s) => s?.passed).length;
|
|
3984
|
+
const stepFailCount = stepResults.filter((s) => !s?.passed).length;
|
|
3985
|
+
const stepFlakinessScore = calculateFlakinessScore(stepPassCount, stepFailCount);
|
|
3986
|
+
const stepErrors = [...new Set(stepResults.filter((s) => s?.error).map((s) => s.error))];
|
|
3987
|
+
stepAnalysis.push({
|
|
3988
|
+
instruction: step.instruction,
|
|
3989
|
+
passCount: stepPassCount,
|
|
3990
|
+
failCount: stepFailCount,
|
|
3991
|
+
flakinessScore: stepFlakinessScore,
|
|
3992
|
+
isFlaky: stepFlakinessScore >= flakinessThreshold,
|
|
3993
|
+
errors: stepErrors,
|
|
3994
|
+
});
|
|
3995
|
+
}
|
|
3996
|
+
return {
|
|
3997
|
+
testName: test.name,
|
|
3998
|
+
totalRuns: runs,
|
|
3999
|
+
passCount,
|
|
4000
|
+
failCount,
|
|
4001
|
+
flakinessScore,
|
|
4002
|
+
isFlaky,
|
|
4003
|
+
classification,
|
|
4004
|
+
runs: testRuns,
|
|
4005
|
+
stepAnalysis,
|
|
4006
|
+
avgDuration: Math.round(avgDuration),
|
|
4007
|
+
durationVariance: Math.round(variance),
|
|
4008
|
+
};
|
|
4009
|
+
}
|
|
4010
|
+
/**
|
|
4011
|
+
* Run flaky test detection on a test suite.
|
|
4012
|
+
*/
|
|
4013
|
+
async function detectFlakyTests(suite, options = {}) {
|
|
4014
|
+
const { runs = 5, flakinessThreshold = 20 } = options;
|
|
4015
|
+
const startTime = Date.now();
|
|
4016
|
+
const testAnalyses = [];
|
|
4017
|
+
console.log(`\nπ Flaky Test Detection: ${suite.name}`);
|
|
4018
|
+
console.log(` Tests: ${suite.tests.length}`);
|
|
4019
|
+
console.log(` Runs per test: ${runs}`);
|
|
4020
|
+
console.log(` Flakiness threshold: ${flakinessThreshold}%`);
|
|
4021
|
+
for (const test of suite.tests) {
|
|
4022
|
+
console.log(`\nπ Test: ${test.name}`);
|
|
4023
|
+
const analysis = await analyzeTestFlakiness(test, options);
|
|
4024
|
+
testAnalyses.push(analysis);
|
|
4025
|
+
const statusIcon = analysis.classification === "stable_pass" ? "β
" :
|
|
4026
|
+
analysis.classification === "stable_fail" ? "β" :
|
|
4027
|
+
analysis.classification === "flaky" ? "β οΈ" :
|
|
4028
|
+
analysis.classification === "mostly_pass" ? "π‘" : "π ";
|
|
4029
|
+
console.log(` ${statusIcon} ${analysis.classification.toUpperCase()} (${analysis.passCount}/${analysis.totalRuns} passed, flakiness: ${analysis.flakinessScore}%)`);
|
|
4030
|
+
}
|
|
4031
|
+
// Calculate summary
|
|
4032
|
+
const stablePassTests = testAnalyses.filter((t) => t.classification === "stable_pass").length;
|
|
4033
|
+
const stableFailTests = testAnalyses.filter((t) => t.classification === "stable_fail").length;
|
|
4034
|
+
const flakyTests = testAnalyses.filter((t) => t.isFlaky).length;
|
|
4035
|
+
const mostFlakyTest = testAnalyses.reduce((max, t) => t.flakinessScore > (max?.flakinessScore || 0) ? t : max, testAnalyses[0])?.testName;
|
|
4036
|
+
const allSteps = testAnalyses.flatMap((t) => t.stepAnalysis);
|
|
4037
|
+
const mostFlakyStep = allSteps.reduce((max, s) => s.flakinessScore > (max?.flakinessScore || 0) ? s : max, allSteps[0])?.instruction;
|
|
4038
|
+
const overallFlakinessScore = testAnalyses.length > 0
|
|
4039
|
+
? Math.round(testAnalyses.reduce((sum, t) => sum + t.flakinessScore, 0) / testAnalyses.length)
|
|
4040
|
+
: 0;
|
|
4041
|
+
return {
|
|
4042
|
+
suiteName: suite.name,
|
|
4043
|
+
timestamp: new Date().toISOString(),
|
|
4044
|
+
duration: Date.now() - startTime,
|
|
4045
|
+
runsPerTest: runs,
|
|
4046
|
+
testAnalyses,
|
|
4047
|
+
summary: {
|
|
4048
|
+
totalTests: suite.tests.length,
|
|
4049
|
+
stablePassTests,
|
|
4050
|
+
stableFailTests,
|
|
4051
|
+
flakyTests,
|
|
4052
|
+
mostFlakyTest: flakyTests > 0 ? mostFlakyTest : undefined,
|
|
4053
|
+
mostFlakyStep: allSteps.some((s) => s.isFlaky) ? mostFlakyStep : undefined,
|
|
4054
|
+
overallFlakinessScore,
|
|
4055
|
+
},
|
|
4056
|
+
};
|
|
4057
|
+
}
|
|
4058
|
+
/**
|
|
4059
|
+
* Format a flaky test report.
|
|
4060
|
+
*/
|
|
4061
|
+
function formatFlakyTestReport(result) {
|
|
4062
|
+
const lines = [];
|
|
4063
|
+
lines.push("");
|
|
4064
|
+
lines.push("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ");
|
|
4065
|
+
lines.push("β FLAKY TEST DETECTION REPORT β");
|
|
4066
|
+
lines.push("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ");
|
|
4067
|
+
lines.push("");
|
|
4068
|
+
lines.push(`π Suite: ${result.suiteName}`);
|
|
4069
|
+
lines.push(`β±οΈ Duration: ${(result.duration / 1000).toFixed(1)}s`);
|
|
4070
|
+
lines.push(`π Runs per test: ${result.runsPerTest}`);
|
|
4071
|
+
lines.push(`π
Timestamp: ${result.timestamp}`);
|
|
4072
|
+
lines.push("");
|
|
4073
|
+
// Summary
|
|
4074
|
+
const flakyEmoji = result.summary.flakyTests === 0 ? "β
" : "β οΈ";
|
|
4075
|
+
lines.push(`${flakyEmoji} Overall Flakiness: ${result.summary.overallFlakinessScore}%`);
|
|
4076
|
+
lines.push("");
|
|
4077
|
+
lines.push("π SUMMARY");
|
|
4078
|
+
lines.push("β".repeat(60));
|
|
4079
|
+
lines.push(` Total Tests: ${result.summary.totalTests}`);
|
|
4080
|
+
lines.push(` Stable (Pass): ${result.summary.stablePassTests}`);
|
|
4081
|
+
lines.push(` Stable (Fail): ${result.summary.stableFailTests}`);
|
|
4082
|
+
lines.push(` Flaky: ${result.summary.flakyTests}`);
|
|
4083
|
+
if (result.summary.mostFlakyTest) {
|
|
4084
|
+
lines.push(` Most Flaky Test: ${result.summary.mostFlakyTest}`);
|
|
4085
|
+
}
|
|
4086
|
+
if (result.summary.mostFlakyStep) {
|
|
4087
|
+
lines.push(` Most Flaky Step: ${result.summary.mostFlakyStep.slice(0, 50)}...`);
|
|
4088
|
+
}
|
|
4089
|
+
lines.push("");
|
|
4090
|
+
// Results table
|
|
4091
|
+
lines.push("ββββββββββββββββββββββββββββββββββ¬βββββββββββββ¬βββββββββββ¬ββββββββββββ¬βββββββββββββ");
|
|
4092
|
+
lines.push("β Test β Status β Pass/Failβ Flakiness β Avg Time β");
|
|
4093
|
+
lines.push("ββββββββββββββββββββββββββββββββββΌβββββββββββββΌβββββββββββΌββββββββββββΌβββββββββββββ€");
|
|
4094
|
+
for (const test of result.testAnalyses) {
|
|
4095
|
+
const name = test.testName.padEnd(30).slice(0, 30);
|
|
4096
|
+
const status = test.classification.replace("_", " ").toUpperCase().padEnd(10).slice(0, 10);
|
|
4097
|
+
const passFailStr = `${test.passCount}/${test.totalRuns}`.padEnd(8);
|
|
4098
|
+
const flakiness = `${test.flakinessScore}%`.padEnd(9);
|
|
4099
|
+
const avgTime = `${(test.avgDuration / 1000).toFixed(1)}s`.padEnd(10);
|
|
4100
|
+
lines.push(`β ${name} β ${status} β ${passFailStr} β ${flakiness} β ${avgTime} β`);
|
|
4101
|
+
}
|
|
4102
|
+
lines.push("ββββββββββββββββββββββββββββββββββ΄βββββββββββββ΄βββββββββββ΄ββββββββββββ΄βββββββββββββ");
|
|
4103
|
+
lines.push("");
|
|
4104
|
+
// Flaky tests details
|
|
4105
|
+
const flakyTests = result.testAnalyses.filter((t) => t.isFlaky);
|
|
4106
|
+
if (flakyTests.length > 0) {
|
|
4107
|
+
lines.push("β οΈ FLAKY TESTS DETAILS");
|
|
4108
|
+
lines.push("β".repeat(60));
|
|
4109
|
+
for (const test of flakyTests) {
|
|
4110
|
+
lines.push(`\n π ${test.testName}`);
|
|
4111
|
+
lines.push(` Flakiness: ${test.flakinessScore}%`);
|
|
4112
|
+
lines.push(` Pass Rate: ${test.passCount}/${test.totalRuns} (${Math.round((test.passCount / test.totalRuns) * 100)}%)`);
|
|
4113
|
+
lines.push(` Duration: ${test.avgDuration}ms Β± ${test.durationVariance}ms`);
|
|
4114
|
+
const flakySteps = test.stepAnalysis.filter((s) => s.isFlaky);
|
|
4115
|
+
if (flakySteps.length > 0) {
|
|
4116
|
+
lines.push(` Flaky Steps:`);
|
|
4117
|
+
for (const step of flakySteps) {
|
|
4118
|
+
lines.push(` - "${step.instruction.slice(0, 40)}..." (${step.flakinessScore}% flaky)`);
|
|
4119
|
+
if (step.errors.length > 0) {
|
|
4120
|
+
lines.push(` Errors: ${step.errors[0].slice(0, 50)}`);
|
|
4121
|
+
}
|
|
4122
|
+
}
|
|
4123
|
+
}
|
|
4124
|
+
}
|
|
4125
|
+
lines.push("");
|
|
4126
|
+
}
|
|
4127
|
+
// Recommendations
|
|
4128
|
+
lines.push("π‘ RECOMMENDATIONS");
|
|
4129
|
+
lines.push("β".repeat(60));
|
|
4130
|
+
if (result.summary.flakyTests === 0) {
|
|
4131
|
+
lines.push(" β
All tests are stable - no action needed");
|
|
4132
|
+
}
|
|
4133
|
+
else {
|
|
4134
|
+
lines.push(` β οΈ ${result.summary.flakyTests} flaky test(s) detected`);
|
|
4135
|
+
lines.push(" Consider:");
|
|
4136
|
+
lines.push(" - Adding explicit waits for timing-sensitive operations");
|
|
4137
|
+
lines.push(" - Using more specific selectors");
|
|
4138
|
+
lines.push(" - Checking for race conditions in the application");
|
|
4139
|
+
lines.push(" - Isolating tests to avoid shared state issues");
|
|
4140
|
+
}
|
|
4141
|
+
lines.push("");
|
|
4142
|
+
return lines.join("\n");
|
|
4143
|
+
}
|
|
3821
4144
|
//# sourceMappingURL=browser.js.map
|