craftdriver 1.1.0 → 1.2.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/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/dist/cli/snapshot.js +31 -4
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/lib/bidi/index.d.ts +4 -5
- package/dist/lib/bidi/index.d.ts.map +1 -1
- package/dist/lib/bidi/index.js +18 -8
- package/dist/lib/bidi/index.js.map +1 -1
- package/dist/lib/bidi/logs.d.ts +12 -1
- package/dist/lib/bidi/logs.d.ts.map +1 -1
- package/dist/lib/bidi/logs.js +20 -8
- package/dist/lib/bidi/logs.js.map +1 -1
- package/dist/lib/browser.d.ts +6 -9
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +6 -4
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/by.d.ts +18 -0
- package/dist/lib/by.d.ts.map +1 -1
- package/dist/lib/by.js +141 -17
- package/dist/lib/by.js.map +1 -1
- package/dist/lib/locator.d.ts +28 -0
- package/dist/lib/locator.d.ts.map +1 -1
- package/dist/lib/locator.js +28 -0
- package/dist/lib/locator.js.map +1 -1
- package/docs/browser-api.md +4 -2
- package/docs/browser-logs.md +8 -23
- package/docs/public/examples/a11y.html +44 -0
- package/docs/public/examples/clock.html +83 -0
- package/docs/public/examples/console-errors.html +344 -0
- package/docs/public/examples/dialogs.html +42 -0
- package/docs/public/examples/download.html +31 -0
- package/docs/public/examples/dynamic.html +131 -0
- package/docs/public/examples/emulate.html +127 -0
- package/docs/public/examples/evaluate.html +28 -0
- package/docs/public/examples/hover-select.html +295 -0
- package/docs/public/examples/iframe-child.html +51 -0
- package/docs/public/examples/iframes.html +35 -0
- package/docs/public/examples/keyboard.html +195 -0
- package/docs/public/examples/locator.html +131 -0
- package/docs/public/examples/login.html +116 -0
- package/docs/public/examples/mobile.html +270 -0
- package/docs/public/examples/mouse.html +505 -0
- package/docs/public/examples/network.html +293 -0
- package/docs/public/examples/popup-target.html +26 -0
- package/docs/public/examples/popup.html +50 -0
- package/docs/public/examples/screenshot.html +99 -0
- package/docs/public/examples/selectors.html +150 -0
- package/docs/public/examples/session.html +514 -0
- package/docs/public/examples/upload.html +36 -0
- package/docs/recipes/accessibility-gate.md +24 -40
- package/docs/recipes/console-error-gate.md +27 -39
- package/docs/recipes/file-upload-download.md +24 -44
- package/docs/recipes/find-elements.md +142 -0
- package/docs/recipes/login-once-reuse-session.md +22 -45
- package/docs/recipes/mobile-flow-with-network-and-logs.md +22 -41
- package/docs/recipes/mock-api-and-assert-network.md +22 -35
- package/docs/recipes/multi-user-contexts.md +32 -43
- package/docs/recipes/page-objects.md +52 -0
- package/docs/recipes/trace-failing-test.md +31 -44
- package/docs/recipes/virtual-clock-time-sensitive-ui.md +24 -40
- package/docs/recipes/vitest-browser-lifecycle.md +15 -15
- package/docs/recipes.md +20 -1
- package/docs/selectors.md +291 -229
- package/docs/tracing.md +2 -2
- package/package.json +5 -1
- package/skills/craftdriver/SKILL.md +3 -2
- package/skills/craftdriver/cheatsheet.md +2 -1
- package/skills/craftdriver/patterns.md +2 -5
package/dist/lib/locator.js
CHANGED
|
@@ -45,6 +45,34 @@ export class Locator {
|
|
|
45
45
|
child._contextSwitcher = this._contextSwitcher;
|
|
46
46
|
return child;
|
|
47
47
|
}
|
|
48
|
+
/** Return a child Locator matching a descendant by ARIA role, scoped within this locator's first match. */
|
|
49
|
+
getByRole(role, opts) {
|
|
50
|
+
return this.locator(By.role(role, opts));
|
|
51
|
+
}
|
|
52
|
+
/** Return a child Locator matching a descendant by visible text, scoped within this locator's first match. */
|
|
53
|
+
getByText(text, opts) {
|
|
54
|
+
return this.locator(By.text(text, opts));
|
|
55
|
+
}
|
|
56
|
+
/** Return a child Locator matching a descendant by associated label, scoped within this locator's first match. */
|
|
57
|
+
getByLabel(text, opts) {
|
|
58
|
+
return this.locator(By.labelText(text, opts));
|
|
59
|
+
}
|
|
60
|
+
/** Return a child Locator matching a descendant by placeholder text, scoped within this locator's first match. */
|
|
61
|
+
getByPlaceholder(text, opts) {
|
|
62
|
+
return this.locator(By.placeholder(text, opts));
|
|
63
|
+
}
|
|
64
|
+
/** Return a child Locator matching a descendant by alt text, scoped within this locator's first match. */
|
|
65
|
+
getByAltText(text, opts) {
|
|
66
|
+
return this.locator(By.altText(text, opts));
|
|
67
|
+
}
|
|
68
|
+
/** Return a child Locator matching a descendant by title attribute, scoped within this locator's first match. */
|
|
69
|
+
getByTitle(text, opts) {
|
|
70
|
+
return this.locator(By.title(text, opts));
|
|
71
|
+
}
|
|
72
|
+
/** Return a child Locator matching a descendant by data-testid, scoped within this locator's first match. */
|
|
73
|
+
getByTestId(id) {
|
|
74
|
+
return this.locator(By.testId(id));
|
|
75
|
+
}
|
|
48
76
|
/** Return a new Locator targeting the element at position `index` (0-based). */
|
|
49
77
|
nth(index) {
|
|
50
78
|
const l = this._clone();
|
package/dist/lib/locator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/lib/locator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/lib/locator.ts"],"names":[],"mappings":"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"}
|
package/docs/browser-api.md
CHANGED
|
@@ -29,7 +29,6 @@ const browser = await Browser.launch({
|
|
|
29
29
|
|--------|------|---------|-------------|
|
|
30
30
|
| `browserName` | `'chrome' \| 'chromium' \| 'firefox'` | `'chrome'` | Browser to launch |
|
|
31
31
|
| `enableBiDi` | `boolean` | `true` | Use WebDriver BiDi. Set `false` only when running against a browser that does not support it — every BiDi-only feature then throws a `requires BiDi` error if called. |
|
|
32
|
-
| `captureLogs` | `boolean` | `false` | Start console/error log capture immediately at launch instead of lazily on first `browser.logs`/`onConsole`/`onError`/`waitForConsole` touch. See [Console Logs And JavaScript Errors](./browser-logs.md). |
|
|
33
32
|
| `storageState` | `string` | — | Path to a session-state JSON file to load on startup |
|
|
34
33
|
| `mobileEmulation` | `MobileEmulation \| DeviceName` | — | Mobile device emulation settings (Chrome/Chromium only) |
|
|
35
34
|
| `downloadsDir` | `string` | temp dir | Directory where downloaded files are saved |
|
|
@@ -194,7 +193,10 @@ const button = browser.find(By.text('Click me'));
|
|
|
194
193
|
const input = browser.find(By.placeholder('Enter email'));
|
|
195
194
|
```
|
|
196
195
|
|
|
197
|
-
##
|
|
196
|
+
## Semantic locators (getBy*)
|
|
197
|
+
|
|
198
|
+
Shortcuts for the most common semantic strategies — see
|
|
199
|
+
[Selectors & Locators](./selectors.md#semantic-locators) for the full set.
|
|
198
200
|
|
|
199
201
|
```typescript
|
|
200
202
|
// By role
|
package/docs/browser-logs.md
CHANGED
|
@@ -12,35 +12,20 @@ emitted a known log message.
|
|
|
12
12
|
|
|
13
13
|
## Capture Timing
|
|
14
14
|
|
|
15
|
-
Capture is
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Messages emitted before that first touch are not captured, so this can return an
|
|
20
|
-
empty array:
|
|
15
|
+
Capture is automatic. CraftDriver subscribes to log events at launch, so
|
|
16
|
+
messages emitted at any point — including during the first navigation, before you
|
|
17
|
+
ever touch `browser.logs` — are captured. There is nothing to enable and no
|
|
18
|
+
listener to pre-arm:
|
|
21
19
|
|
|
22
20
|
```typescript
|
|
23
21
|
await browser.navigateTo('https://example.com');
|
|
24
|
-
const messages = browser.logs.getMessages();
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Start capture before the action that logs:
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
const warning = browser.logs.waitForConsole((msg) => msg.level === 'warn');
|
|
31
|
-
|
|
32
22
|
await browser.getByRole('button', { name: 'Show warning' }).click();
|
|
33
|
-
|
|
23
|
+
const messages = browser.logs.getMessages(); // includes the warning
|
|
34
24
|
```
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const browser = await Browser.launch({
|
|
40
|
-
browserName: 'chrome',
|
|
41
|
-
captureLogs: true,
|
|
42
|
-
});
|
|
43
|
-
```
|
|
26
|
+
The subscription rides the connect-time batch, so it costs no extra round trip
|
|
27
|
+
and no measurable overhead. Use `clearLogs()` if you want to assert only on
|
|
28
|
+
messages emitted after a certain point.
|
|
44
29
|
|
|
45
30
|
## Read Collected Messages
|
|
46
31
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<title>A11y fixture</title>
|
|
6
|
+
<style>
|
|
7
|
+
body { font-family: system-ui, sans-serif; margin: 20px; }
|
|
8
|
+
/* Deliberately low-contrast text — triggers `color-contrast`. */
|
|
9
|
+
.bad-contrast { color: #bbb; background: #ccc; padding: 8px; }
|
|
10
|
+
.clean { color: #111; background: #fff; padding: 8px; }
|
|
11
|
+
</style>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<header>
|
|
15
|
+
<h1>Accessibility fixture</h1>
|
|
16
|
+
</header>
|
|
17
|
+
|
|
18
|
+
<!-- ============================================================ -->
|
|
19
|
+
<!-- KNOWN-BAD region: contains seeded a11y violations -->
|
|
20
|
+
<!-- ============================================================ -->
|
|
21
|
+
<section id="bad" aria-label="Known violations">
|
|
22
|
+
<h2>Bad section</h2>
|
|
23
|
+
|
|
24
|
+
<!-- Missing alt: triggers `image-alt` (critical). -->
|
|
25
|
+
<img id="no-alt" src="data:image/gif;base64,R0lGODlhAQABAAAAACw=" width="1" height="1">
|
|
26
|
+
|
|
27
|
+
<!-- Button without an accessible name: triggers `button-name` (critical). -->
|
|
28
|
+
<button id="nameless"></button>
|
|
29
|
+
|
|
30
|
+
<!-- Low-contrast text: triggers `color-contrast` (serious). -->
|
|
31
|
+
<p class="bad-contrast" id="low-contrast">Hard to read text</p>
|
|
32
|
+
</section>
|
|
33
|
+
|
|
34
|
+
<!-- ============================================================ -->
|
|
35
|
+
<!-- KNOWN-GOOD region: no violations -->
|
|
36
|
+
<!-- ============================================================ -->
|
|
37
|
+
<main id="good" aria-label="Clean region">
|
|
38
|
+
<h2>Good section</h2>
|
|
39
|
+
<p class="clean">Readable paragraph with sufficient contrast.</p>
|
|
40
|
+
<button id="named">Click me</button>
|
|
41
|
+
<img id="with-alt" alt="placeholder pixel" src="data:image/gif;base64,R0lGODlhAQABAAAAACw=" width="1" height="1">
|
|
42
|
+
</main>
|
|
43
|
+
</body>
|
|
44
|
+
</html>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<title>Clock</title>
|
|
6
|
+
<style>
|
|
7
|
+
body { font-family: sans-serif; padding: 1rem; }
|
|
8
|
+
#login-modal { display: none; }
|
|
9
|
+
#login-modal.visible { display: block; }
|
|
10
|
+
#search-status { color: #888; }
|
|
11
|
+
</style>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<h1>Clock fixture</h1>
|
|
15
|
+
|
|
16
|
+
<!-- Section 1: current date display (uses Date.now / new Date) -->
|
|
17
|
+
<p id="date-display"></p>
|
|
18
|
+
<p id="performance-display"></p>
|
|
19
|
+
|
|
20
|
+
<!-- Section 2: trial banner — keyed on a fixed deadline -->
|
|
21
|
+
<div id="trial-banner"></div>
|
|
22
|
+
|
|
23
|
+
<!-- Section 3: debounced search input -->
|
|
24
|
+
<input id="search-input" type="text" placeholder="Search…" autocomplete="off">
|
|
25
|
+
<p id="search-status">no request yet</p>
|
|
26
|
+
<p id="search-count">0</p>
|
|
27
|
+
|
|
28
|
+
<!-- Section 4: 15-minute idle timer → login modal -->
|
|
29
|
+
<main id="main-content">Main content</main>
|
|
30
|
+
<div id="login-modal">
|
|
31
|
+
<h2>Session expired — please log in</h2>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<script>
|
|
35
|
+
// ── Section 1: update date display once on load ──────────────────────────
|
|
36
|
+
document.getElementById('date-display').textContent = new Date().toISOString();
|
|
37
|
+
document.getElementById('performance-display').textContent =
|
|
38
|
+
String(Math.round(performance.now()));
|
|
39
|
+
|
|
40
|
+
// ── Section 2: trial banner ──────────────────────────────────────────────
|
|
41
|
+
// Deadline: 2026-06-16T00:00:00Z
|
|
42
|
+
var TRIAL_DEADLINE = new Date('2026-06-16T00:00:00Z').getTime();
|
|
43
|
+
(function updateBanner() {
|
|
44
|
+
var now = Date.now();
|
|
45
|
+
var banner = document.getElementById('trial-banner');
|
|
46
|
+
if (now < TRIAL_DEADLINE) {
|
|
47
|
+
var msLeft = TRIAL_DEADLINE - now;
|
|
48
|
+
var hoursLeft = msLeft / 3600000;
|
|
49
|
+
if (hoursLeft <= 24) {
|
|
50
|
+
banner.textContent = 'Trial expires today';
|
|
51
|
+
} else {
|
|
52
|
+
banner.textContent = 'Trial active';
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
banner.textContent = 'Trial expired';
|
|
56
|
+
}
|
|
57
|
+
})();
|
|
58
|
+
|
|
59
|
+
// ── Section 3: debounced search ──────────────────────────────────────────
|
|
60
|
+
var searchCount = 0;
|
|
61
|
+
var debounceTimer = null;
|
|
62
|
+
document.getElementById('search-input').addEventListener('input', function(e) {
|
|
63
|
+
clearTimeout(debounceTimer);
|
|
64
|
+
var query = e.target.value;
|
|
65
|
+
debounceTimer = setTimeout(function() {
|
|
66
|
+
searchCount++;
|
|
67
|
+
document.getElementById('search-status').textContent =
|
|
68
|
+
'request sent: ' + query;
|
|
69
|
+
document.getElementById('search-count').textContent = String(searchCount);
|
|
70
|
+
// In a real app this would be fetch('/search?q=' + query)
|
|
71
|
+
}, 300);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// ── Section 4: 15-minute idle logout ────────────────────────────────────
|
|
75
|
+
// 15 minutes = 900 000 ms
|
|
76
|
+
var IDLE_MS = 15 * 60 * 1000;
|
|
77
|
+
setTimeout(function() {
|
|
78
|
+
document.getElementById('login-modal').classList.add('visible');
|
|
79
|
+
document.getElementById('main-content').style.display = 'none';
|
|
80
|
+
}, IDLE_MS);
|
|
81
|
+
</script>
|
|
82
|
+
</body>
|
|
83
|
+
</html>
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>Console & Errors Example</title>
|
|
8
|
+
<style>
|
|
9
|
+
body {
|
|
10
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
11
|
+
max-width: 800px;
|
|
12
|
+
margin: 40px auto;
|
|
13
|
+
padding: 20px;
|
|
14
|
+
background: #f5f5f5;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.card {
|
|
18
|
+
background: white;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
padding: 20px;
|
|
21
|
+
margin-bottom: 20px;
|
|
22
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
h1 {
|
|
26
|
+
color: #333;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
h2 {
|
|
30
|
+
color: #666;
|
|
31
|
+
margin-top: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
h3 {
|
|
35
|
+
color: #888;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
button {
|
|
39
|
+
padding: 10px 20px;
|
|
40
|
+
border: none;
|
|
41
|
+
border-radius: 4px;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
margin-right: 10px;
|
|
44
|
+
margin-bottom: 10px;
|
|
45
|
+
font-size: 14px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.btn-log {
|
|
49
|
+
background: #17a2b8;
|
|
50
|
+
color: white;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.btn-warn {
|
|
54
|
+
background: #ffc107;
|
|
55
|
+
color: #333;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.btn-error {
|
|
59
|
+
background: #dc3545;
|
|
60
|
+
color: white;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.btn-info {
|
|
64
|
+
background: #6c757d;
|
|
65
|
+
color: white;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.btn-debug {
|
|
69
|
+
background: #28a745;
|
|
70
|
+
color: white;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.btn-throw {
|
|
74
|
+
background: #6f42c1;
|
|
75
|
+
color: white;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
button:hover {
|
|
79
|
+
opacity: 0.9;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.note {
|
|
83
|
+
background: #fff3cd;
|
|
84
|
+
border: 1px solid #ffc107;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
padding: 10px;
|
|
87
|
+
margin-top: 15px;
|
|
88
|
+
font-size: 14px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.output {
|
|
92
|
+
background: #1e1e1e;
|
|
93
|
+
color: #d4d4d4;
|
|
94
|
+
border-radius: 4px;
|
|
95
|
+
padding: 15px;
|
|
96
|
+
margin-top: 15px;
|
|
97
|
+
font-family: 'Monaco', 'Menlo', monospace;
|
|
98
|
+
font-size: 13px;
|
|
99
|
+
max-height: 200px;
|
|
100
|
+
overflow-y: auto;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.output .log {
|
|
104
|
+
color: #d4d4d4;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.output .warn {
|
|
108
|
+
color: #dcdcaa;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.output .error {
|
|
112
|
+
color: #f48771;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.output .info {
|
|
116
|
+
color: #9cdcfe;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.output .debug {
|
|
120
|
+
color: #6a9955;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
code {
|
|
124
|
+
background: #e9ecef;
|
|
125
|
+
padding: 2px 6px;
|
|
126
|
+
border-radius: 3px;
|
|
127
|
+
}
|
|
128
|
+
</style>
|
|
129
|
+
</head>
|
|
130
|
+
|
|
131
|
+
<body>
|
|
132
|
+
<h1>🖥️ Console & JavaScript Errors</h1>
|
|
133
|
+
<p>This page generates console messages and JavaScript errors for testing BiDi log monitoring.</p>
|
|
134
|
+
|
|
135
|
+
<!-- Console Log Methods -->
|
|
136
|
+
<div class="card">
|
|
137
|
+
<h2>1. Console Log Methods</h2>
|
|
138
|
+
<p>Click buttons to trigger different console methods. Open DevTools (F12) to see output.</p>
|
|
139
|
+
|
|
140
|
+
<button id="btn-console-log" class="btn-log" onclick="doLog()">console.log()</button>
|
|
141
|
+
<button id="btn-console-warn" class="btn-warn" onclick="doWarn()">console.warn()</button>
|
|
142
|
+
<button id="btn-console-error" class="btn-error" onclick="doError()">console.error()</button>
|
|
143
|
+
<button id="btn-console-info" class="btn-info" onclick="doInfo()">console.info()</button>
|
|
144
|
+
<button id="btn-console-debug" class="btn-debug" onclick="doDebug()">console.debug()</button>
|
|
145
|
+
|
|
146
|
+
<div class="note">
|
|
147
|
+
💡 These buttons call <code>console.log()</code>, <code>console.warn()</code>, etc.
|
|
148
|
+
BiDi can capture all these in real-time!
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<!-- Console with Objects -->
|
|
153
|
+
<div class="card">
|
|
154
|
+
<h2>2. Complex Console Output</h2>
|
|
155
|
+
<p>Log complex objects, arrays, and multiple arguments.</p>
|
|
156
|
+
|
|
157
|
+
<button id="btn-log-object" class="btn-log" onclick="logObject()">Log Object</button>
|
|
158
|
+
<button id="btn-log-array" class="btn-log" onclick="logArray()">Log Array</button>
|
|
159
|
+
<button id="btn-log-multiple" class="btn-log" onclick="logMultiple()">Log Multiple Args</button>
|
|
160
|
+
<button id="btn-log-formatted" class="btn-log" onclick="logFormatted()">Log Formatted String</button>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<!-- JavaScript Errors -->
|
|
164
|
+
<div class="card">
|
|
165
|
+
<h2>3. JavaScript Errors (Thrown)</h2>
|
|
166
|
+
<p>Click buttons to throw actual JavaScript errors. BiDi captures these as uncaught exceptions.</p>
|
|
167
|
+
|
|
168
|
+
<button id="btn-throw-error" class="btn-throw" onclick="throwError()">Throw Error</button>
|
|
169
|
+
<button id="btn-throw-type" class="btn-throw" onclick="throwTypeError()">Throw TypeError</button>
|
|
170
|
+
<button id="btn-throw-reference" class="btn-throw" onclick="throwReferenceError()">Throw ReferenceError</button>
|
|
171
|
+
<button id="btn-throw-syntax" class="btn-throw" onclick="throwWithEval()">Eval Syntax Error</button>
|
|
172
|
+
|
|
173
|
+
<div class="note">
|
|
174
|
+
⚠️ These buttons throw <strong>real uncaught exceptions</strong>.
|
|
175
|
+
You'll see them in the console as red errors.
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<!-- Promise Rejections -->
|
|
180
|
+
<div class="card">
|
|
181
|
+
<h2>4. Async Errors & Promise Rejections</h2>
|
|
182
|
+
<p>Unhandled promise rejections and async errors.</p>
|
|
183
|
+
|
|
184
|
+
<button id="btn-promise-reject" class="btn-throw" onclick="rejectPromise()">Unhandled Promise Rejection</button>
|
|
185
|
+
<button id="btn-async-error" class="btn-throw" onclick="asyncError()">Async Function Error</button>
|
|
186
|
+
<button id="btn-timeout-error" class="btn-throw" onclick="timeoutError()">Error in setTimeout</button>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<!-- Triggered Errors -->
|
|
190
|
+
<div class="card">
|
|
191
|
+
<h2>5. DOM Errors</h2>
|
|
192
|
+
<p>Errors triggered by DOM operations.</p>
|
|
193
|
+
|
|
194
|
+
<button id="btn-null-access" class="btn-throw" onclick="nullAccess()">Access Null Element</button>
|
|
195
|
+
<button id="btn-invalid-selector" class="btn-throw" onclick="invalidSelector()">Invalid Selector</button>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<!-- Log Display -->
|
|
199
|
+
<div class="card">
|
|
200
|
+
<h2>📋 Local Log Display</h2>
|
|
201
|
+
<p>Shows logs captured on this page (for visual reference):</p>
|
|
202
|
+
<div id="log-output" class="output">Logs will appear here...</div>
|
|
203
|
+
<button onclick="clearLogs()" style="margin-top: 10px; background: #6c757d; color: white;">Clear Logs</button>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<script>
|
|
207
|
+
const logOutput = document.getElementById('log-output');
|
|
208
|
+
let logCount = 0;
|
|
209
|
+
|
|
210
|
+
function appendToDisplay(type, message) {
|
|
211
|
+
logCount++;
|
|
212
|
+
const line = document.createElement('div');
|
|
213
|
+
line.className = type;
|
|
214
|
+
line.textContent = `[${logCount}] [${type.toUpperCase()}] ${message}`;
|
|
215
|
+
logOutput.appendChild(line);
|
|
216
|
+
logOutput.scrollTop = logOutput.scrollHeight;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function clearLogs() {
|
|
220
|
+
logOutput.innerHTML = '';
|
|
221
|
+
logCount = 0;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Console methods
|
|
225
|
+
function doLog() {
|
|
226
|
+
const msg = 'Hello from console.log!';
|
|
227
|
+
console.log(msg);
|
|
228
|
+
appendToDisplay('log', msg);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function doWarn() {
|
|
232
|
+
const msg = 'This is a warning message';
|
|
233
|
+
console.warn(msg);
|
|
234
|
+
appendToDisplay('warn', msg);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function doError() {
|
|
238
|
+
const msg = 'This is an error message (via console.error)';
|
|
239
|
+
console.error(msg);
|
|
240
|
+
appendToDisplay('error', msg);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function doInfo() {
|
|
244
|
+
const msg = 'This is an info message';
|
|
245
|
+
console.info(msg);
|
|
246
|
+
appendToDisplay('info', msg);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function doDebug() {
|
|
250
|
+
const msg = 'This is a debug message';
|
|
251
|
+
console.debug(msg);
|
|
252
|
+
appendToDisplay('debug', msg);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Complex logging
|
|
256
|
+
function logObject() {
|
|
257
|
+
const obj = {
|
|
258
|
+
user: 'testuser',
|
|
259
|
+
role: 'admin',
|
|
260
|
+
permissions: ['read', 'write', 'delete'],
|
|
261
|
+
metadata: { created: new Date().toISOString() }
|
|
262
|
+
};
|
|
263
|
+
console.log('User object:', obj);
|
|
264
|
+
appendToDisplay('log', 'User object: ' + JSON.stringify(obj));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function logArray() {
|
|
268
|
+
const arr = [1, 2, 3, { nested: true }, ['a', 'b', 'c']];
|
|
269
|
+
console.log('Array:', arr);
|
|
270
|
+
appendToDisplay('log', 'Array: ' + JSON.stringify(arr));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function logMultiple() {
|
|
274
|
+
console.log('Multiple', 'arguments', 123, true, { key: 'value' });
|
|
275
|
+
appendToDisplay('log', 'Multiple arguments 123 true {"key":"value"}');
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
function logFormatted() {
|
|
279
|
+
console.log('User %s has %d items (verified: %o)', 'Alice', 5, true);
|
|
280
|
+
appendToDisplay('log', 'User Alice has 5 items (verified: true)');
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// JavaScript errors
|
|
284
|
+
function throwError() {
|
|
285
|
+
appendToDisplay('error', 'About to throw Error...');
|
|
286
|
+
throw new Error('This is a thrown Error!');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
function throwTypeError() {
|
|
290
|
+
appendToDisplay('error', 'About to throw TypeError...');
|
|
291
|
+
throw new TypeError('Cannot read property "foo" of undefined');
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function throwReferenceError() {
|
|
295
|
+
appendToDisplay('error', 'About to throw ReferenceError...');
|
|
296
|
+
throw new ReferenceError('undefinedVariable is not defined');
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function throwWithEval() {
|
|
300
|
+
appendToDisplay('error', 'About to eval invalid syntax...');
|
|
301
|
+
eval('function() { invalid syntax here }}}');
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Async errors
|
|
305
|
+
function rejectPromise() {
|
|
306
|
+
appendToDisplay('error', 'Creating unhandled promise rejection...');
|
|
307
|
+
new Promise((_, reject) => {
|
|
308
|
+
reject(new Error('Unhandled promise rejection!'));
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function asyncError() {
|
|
313
|
+
appendToDisplay('error', 'Calling async function that throws...');
|
|
314
|
+
(async () => {
|
|
315
|
+
throw new Error('Error inside async function!');
|
|
316
|
+
})();
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function timeoutError() {
|
|
320
|
+
appendToDisplay('error', 'Error will occur in 100ms...');
|
|
321
|
+
setTimeout(() => {
|
|
322
|
+
throw new Error('Error inside setTimeout!');
|
|
323
|
+
}, 100);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// DOM errors
|
|
327
|
+
function nullAccess() {
|
|
328
|
+
appendToDisplay('error', 'Accessing property of null element...');
|
|
329
|
+
const elem = document.getElementById('non-existent-element');
|
|
330
|
+
elem.textContent = 'This will fail';
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function invalidSelector() {
|
|
334
|
+
appendToDisplay('error', 'Using invalid CSS selector...');
|
|
335
|
+
document.querySelector('div[invalid==>]');
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Initial log
|
|
339
|
+
console.log('Page loaded: console-errors.html');
|
|
340
|
+
appendToDisplay('log', 'Page loaded: console-errors.html');
|
|
341
|
+
</script>
|
|
342
|
+
</body>
|
|
343
|
+
|
|
344
|
+
</html>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>Dialogs</title>
|
|
7
|
+
</head>
|
|
8
|
+
|
|
9
|
+
<body>
|
|
10
|
+
<h1>Dialogs</h1>
|
|
11
|
+
|
|
12
|
+
<!-- alert -->
|
|
13
|
+
<button id="show-alert">Show Alert</button>
|
|
14
|
+
|
|
15
|
+
<!-- confirm — records whether user accepted or dismissed -->
|
|
16
|
+
<button id="show-confirm">Show Confirm</button>
|
|
17
|
+
<p id="confirm-result"></p>
|
|
18
|
+
|
|
19
|
+
<!-- prompt — echoes the entered value -->
|
|
20
|
+
<button id="show-prompt">Show Prompt</button>
|
|
21
|
+
<p id="prompt-result"></p>
|
|
22
|
+
|
|
23
|
+
<!-- beforeunload is not tested here — browser behaviour varies -->
|
|
24
|
+
|
|
25
|
+
<script>
|
|
26
|
+
document.getElementById('show-alert').addEventListener('click', () => {
|
|
27
|
+
alert('Hello from alert');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
document.getElementById('show-confirm').addEventListener('click', () => {
|
|
31
|
+
const ok = confirm('Are you sure?');
|
|
32
|
+
document.getElementById('confirm-result').textContent = ok ? 'confirmed' : 'dismissed';
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
document.getElementById('show-prompt').addEventListener('click', () => {
|
|
36
|
+
const value = prompt('Enter a value', 'default');
|
|
37
|
+
document.getElementById('prompt-result').textContent = value ?? 'dismissed';
|
|
38
|
+
});
|
|
39
|
+
</script>
|
|
40
|
+
</body>
|
|
41
|
+
|
|
42
|
+
</html>
|