snap-ally 0.2.7-beta → 0.3.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/dist/A11yReportAssets.d.ts +5 -12
- package/dist/A11yReportAssets.js +16 -82
- package/dist/A11yScanner.d.ts +2 -21
- package/dist/A11yScanner.js +16 -22
- package/dist/A11yTimeUtils.js +11 -23
- package/dist/A11yVisualReporter.d.ts +50 -0
- package/dist/A11yVisualReporter.js +188 -0
- package/dist/AccessibilityReporterOptions.d.ts +24 -0
- package/dist/AccessibilityReporterOptions.js +5 -0
- package/dist/ResolvedColors.d.ts +15 -0
- package/dist/ResolvedColors.js +20 -0
- package/dist/SnapAllyReporter.d.ts +12 -72
- package/dist/SnapAllyReporter.js +218 -329
- package/dist/core/A11yHtmlRenderer.d.ts +17 -0
- package/dist/core/A11yHtmlRenderer.js +118 -0
- package/dist/core/A11yReportAssets.d.ts +30 -0
- package/dist/core/A11yReportAssets.js +127 -0
- package/dist/core/A11yScanner.d.ts +8 -0
- package/dist/core/A11yScanner.js +178 -0
- package/dist/core/A11yVisualReporter.d.ts +50 -0
- package/dist/core/A11yVisualReporter.js +188 -0
- package/dist/core/HtmlRenderer.d.ts +14 -0
- package/dist/core/HtmlRenderer.js +106 -0
- package/dist/core/ReportAssets.d.ts +29 -0
- package/dist/core/ReportAssets.js +126 -0
- package/dist/core/Scanner.d.ts +7 -0
- package/dist/core/Scanner.js +162 -0
- package/dist/core/VisualReporter.d.ts +54 -0
- package/dist/core/VisualReporter.js +192 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +13 -12
- package/dist/models/A11yDataSource.d.ts +15 -0
- package/dist/models/A11yDataSource.js +2 -0
- package/dist/models/A11yError.d.ts +34 -0
- package/dist/models/A11yError.js +11 -0
- package/dist/models/A11yScannerOptions.d.ts +24 -0
- package/dist/models/A11yScannerOptions.js +2 -0
- package/dist/models/AccessibilityReporterOptions.d.ts +24 -0
- package/dist/models/AccessibilityReporterOptions.js +5 -0
- package/dist/models/DataSource.d.ts +15 -0
- package/dist/models/DataSource.js +2 -0
- package/dist/models/ImagePath.d.ts +5 -0
- package/dist/models/ImagePath.js +3 -0
- package/dist/models/ReportData.d.ts +24 -0
- package/dist/models/ReportData.js +2 -0
- package/dist/models/ReporterOptions.d.ts +24 -0
- package/dist/models/ReporterOptions.js +5 -0
- package/dist/models/ResolvedColors.d.ts +16 -0
- package/dist/models/ResolvedColors.js +24 -0
- package/dist/models/ScannerOptions.d.ts +30 -0
- package/dist/models/ScannerOptions.js +2 -0
- package/dist/models/Severity.d.ts +7 -0
- package/dist/models/Severity.js +11 -0
- package/dist/models/Target.d.ts +10 -0
- package/dist/models/Target.js +3 -0
- package/dist/models/TestResults.d.ts +41 -0
- package/dist/models/TestResults.js +2 -0
- package/dist/models/TestStatusIcon.d.ts +8 -0
- package/dist/models/TestStatusIcon.js +12 -0
- package/dist/models/TestSummary.d.ts +34 -0
- package/dist/models/TestSummary.js +2 -0
- package/dist/models/Violation.d.ts +13 -0
- package/dist/models/Violation.js +2 -0
- package/dist/models/index.d.ts +12 -113
- package/dist/models/index.js +26 -16
- package/dist/templates/accessibility-report.html +62 -95
- package/dist/templates/execution-summary.html +37 -103
- package/dist/templates/global-report-styles.css +400 -9
- package/dist/templates/report-app.js +170 -72
- package/dist/templates/test-execution-report.html +84 -121
- package/dist/utils/A11yTimeUtils.d.ts +13 -0
- package/dist/utils/A11yTimeUtils.js +40 -0
- package/dist/utils/TimeUtils.d.ts +13 -0
- package/dist/utils/TimeUtils.js +39 -0
- package/package.json +2 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Violation } from './Violation';
|
|
2
|
+
/** Aggregated results for a single test run. */
|
|
3
|
+
export interface TestResults {
|
|
4
|
+
num: number;
|
|
5
|
+
folderName: string;
|
|
6
|
+
title: string;
|
|
7
|
+
fileName: string;
|
|
8
|
+
timeDuration: number;
|
|
9
|
+
duration: string;
|
|
10
|
+
description: string;
|
|
11
|
+
status: string;
|
|
12
|
+
pageUrl?: string;
|
|
13
|
+
browser: string;
|
|
14
|
+
adoOrganization?: string;
|
|
15
|
+
adoProject?: string;
|
|
16
|
+
adoAreaPath?: string;
|
|
17
|
+
timestamp?: string;
|
|
18
|
+
tags: string[];
|
|
19
|
+
preConditions: string[];
|
|
20
|
+
steps: string[];
|
|
21
|
+
postConditions: string[];
|
|
22
|
+
statusIcon: string;
|
|
23
|
+
/** Relative paths to videos for the test execution. */
|
|
24
|
+
videoPath: string | string[] | null;
|
|
25
|
+
screenshotPaths: string[];
|
|
26
|
+
attachments: {
|
|
27
|
+
path: string;
|
|
28
|
+
name: string;
|
|
29
|
+
}[];
|
|
30
|
+
errors: string[];
|
|
31
|
+
a11yReportPath?: string;
|
|
32
|
+
executionReportPath?: string;
|
|
33
|
+
a11yErrors?: Violation[];
|
|
34
|
+
a11yErrorCount?: number;
|
|
35
|
+
colors?: {
|
|
36
|
+
critical?: string;
|
|
37
|
+
serious?: string;
|
|
38
|
+
moderate?: string;
|
|
39
|
+
minor?: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Standard icons for test statuses in the report. */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TestStatusIcon = void 0;
|
|
5
|
+
var TestStatusIcon;
|
|
6
|
+
(function (TestStatusIcon) {
|
|
7
|
+
TestStatusIcon["passed"] = "check_circle";
|
|
8
|
+
TestStatusIcon["failed"] = "cancel";
|
|
9
|
+
TestStatusIcon["skipped"] = "remove_circle";
|
|
10
|
+
TestStatusIcon["timedOut"] = "alarm_off";
|
|
11
|
+
TestStatusIcon["interrupted"] = "block";
|
|
12
|
+
})(TestStatusIcon || (exports.TestStatusIcon = TestStatusIcon = {}));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TestResults } from './TestResults';
|
|
2
|
+
/** Final execution summary data structure. */
|
|
3
|
+
export interface TestSummary {
|
|
4
|
+
date?: string;
|
|
5
|
+
duration: string;
|
|
6
|
+
status: string;
|
|
7
|
+
statusIcon: string;
|
|
8
|
+
total: number;
|
|
9
|
+
totalPassed: number;
|
|
10
|
+
totalFailed: number;
|
|
11
|
+
totalFlaky: number;
|
|
12
|
+
totalSkipped: number;
|
|
13
|
+
groupedResults: {
|
|
14
|
+
[key: string]: TestResults[];
|
|
15
|
+
};
|
|
16
|
+
wcagErrors: {
|
|
17
|
+
[key: string]: {
|
|
18
|
+
count: number;
|
|
19
|
+
severity: string;
|
|
20
|
+
helpUrl?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
totalA11yErrorCount: number;
|
|
25
|
+
browserSummaries?: {
|
|
26
|
+
[browser: string]: TestSummary;
|
|
27
|
+
};
|
|
28
|
+
colors?: {
|
|
29
|
+
critical?: string;
|
|
30
|
+
serious?: string;
|
|
31
|
+
moderate?: string;
|
|
32
|
+
minor?: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Target } from './Target';
|
|
2
|
+
/** Grouped error entry for a specific accessibility violation. */
|
|
3
|
+
export interface Violation {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
wcagRule: string;
|
|
7
|
+
severity: string;
|
|
8
|
+
help: string;
|
|
9
|
+
helpUrl: string;
|
|
10
|
+
guideline: string;
|
|
11
|
+
total: number;
|
|
12
|
+
target: Target[];
|
|
13
|
+
}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -1,113 +1,12 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
adoAreaPath?: string;
|
|
14
|
-
adoPat?: string;
|
|
15
|
-
timestamp?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface A11yError {
|
|
18
|
-
id: string;
|
|
19
|
-
description: string;
|
|
20
|
-
wcagRule: string;
|
|
21
|
-
severity: string;
|
|
22
|
-
help: string;
|
|
23
|
-
helpUrl: string;
|
|
24
|
-
guideline: string;
|
|
25
|
-
total: number;
|
|
26
|
-
target: Target[];
|
|
27
|
-
}
|
|
28
|
-
export interface Target {
|
|
29
|
-
element: string;
|
|
30
|
-
snippet: string;
|
|
31
|
-
html: string;
|
|
32
|
-
screenshot: string;
|
|
33
|
-
steps: string[];
|
|
34
|
-
stepsJson: string;
|
|
35
|
-
screenshotBase64: string;
|
|
36
|
-
}
|
|
37
|
-
export interface ImagePath {
|
|
38
|
-
srcPath: string;
|
|
39
|
-
fileName: string;
|
|
40
|
-
}
|
|
41
|
-
export declare enum Severity {
|
|
42
|
-
minor = "minor",
|
|
43
|
-
moderate = "moderate",
|
|
44
|
-
serious = "serious",
|
|
45
|
-
critical = "critical"
|
|
46
|
-
}
|
|
47
|
-
export interface TestResults {
|
|
48
|
-
num: number;
|
|
49
|
-
folderName: string;
|
|
50
|
-
title: string;
|
|
51
|
-
fileName: string;
|
|
52
|
-
timeDuration: number;
|
|
53
|
-
duration: string;
|
|
54
|
-
description: string;
|
|
55
|
-
status: string;
|
|
56
|
-
pageUrl?: string;
|
|
57
|
-
browser: string;
|
|
58
|
-
tags: string[];
|
|
59
|
-
preConditions: string[];
|
|
60
|
-
steps: string[];
|
|
61
|
-
postConditions: string[];
|
|
62
|
-
statusIcon: string;
|
|
63
|
-
videoPath: string | null;
|
|
64
|
-
screenshotPaths: string[];
|
|
65
|
-
attachments: {
|
|
66
|
-
path: string;
|
|
67
|
-
name: string;
|
|
68
|
-
}[];
|
|
69
|
-
errors: string[];
|
|
70
|
-
a11yReportPath?: string;
|
|
71
|
-
executionReportPath?: string;
|
|
72
|
-
a11yErrors?: A11yError[];
|
|
73
|
-
a11yErrorCount?: number;
|
|
74
|
-
colors?: {
|
|
75
|
-
critical?: string;
|
|
76
|
-
serious?: string;
|
|
77
|
-
moderate?: string;
|
|
78
|
-
minor?: string;
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
export interface TestSummary {
|
|
82
|
-
date?: string;
|
|
83
|
-
duration: string;
|
|
84
|
-
status: string;
|
|
85
|
-
statusIcon: string;
|
|
86
|
-
total: number;
|
|
87
|
-
totalPassed: number;
|
|
88
|
-
totalFailed: number;
|
|
89
|
-
totalFlaky: number;
|
|
90
|
-
totalSkipped: number;
|
|
91
|
-
groupedResults: {
|
|
92
|
-
[key: string]: TestResults[];
|
|
93
|
-
};
|
|
94
|
-
wcagErrors: {
|
|
95
|
-
[key: string]: {
|
|
96
|
-
count: number;
|
|
97
|
-
severity: string;
|
|
98
|
-
helpUrl?: string;
|
|
99
|
-
description?: string;
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
totalA11yErrorCount: number;
|
|
103
|
-
browserSummaries?: {
|
|
104
|
-
[browser: string]: TestSummary;
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
export declare enum TestStatusIcon {
|
|
108
|
-
passed = "check_circle",
|
|
109
|
-
failed = "cancel",
|
|
110
|
-
skipped = "remove_circle",
|
|
111
|
-
timedOut = "alarm_off",
|
|
112
|
-
interrupted = "block"
|
|
113
|
-
}
|
|
1
|
+
export * from './Violation';
|
|
2
|
+
export * from './ReportData';
|
|
3
|
+
export * from './TestResults';
|
|
4
|
+
export * from './ScannerOptions';
|
|
5
|
+
export * from './DataSource';
|
|
6
|
+
export * from './ReporterOptions';
|
|
7
|
+
export * from './ResolvedColors';
|
|
8
|
+
export * from './Target';
|
|
9
|
+
export * from './Severity';
|
|
10
|
+
export * from './TestStatusIcon';
|
|
11
|
+
export * from './TestSummary';
|
|
12
|
+
export * from './ImagePath';
|
package/dist/models/index.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
TestStatusIcon["skipped"] = "remove_circle";
|
|
16
|
-
TestStatusIcon["timedOut"] = "alarm_off";
|
|
17
|
-
TestStatusIcon["interrupted"] = "block";
|
|
18
|
-
})(TestStatusIcon || (exports.TestStatusIcon = TestStatusIcon = {}));
|
|
17
|
+
__exportStar(require("./Violation"), exports);
|
|
18
|
+
__exportStar(require("./ReportData"), exports);
|
|
19
|
+
__exportStar(require("./TestResults"), exports);
|
|
20
|
+
__exportStar(require("./ScannerOptions"), exports);
|
|
21
|
+
__exportStar(require("./DataSource"), exports);
|
|
22
|
+
__exportStar(require("./ReporterOptions"), exports);
|
|
23
|
+
__exportStar(require("./ResolvedColors"), exports);
|
|
24
|
+
__exportStar(require("./Target"), exports);
|
|
25
|
+
__exportStar(require("./Severity"), exports);
|
|
26
|
+
__exportStar(require("./TestStatusIcon"), exports);
|
|
27
|
+
__exportStar(require("./TestSummary"), exports);
|
|
28
|
+
__exportStar(require("./ImagePath"), exports);
|
|
@@ -26,39 +26,27 @@
|
|
|
26
26
|
</head>
|
|
27
27
|
|
|
28
28
|
<body>
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
position: fixed;
|
|
33
|
-
inset: 0;
|
|
34
|
-
background: #fff;
|
|
35
|
-
z-index: 10000;
|
|
36
|
-
display: flex;
|
|
37
|
-
flex-direction: column;
|
|
38
|
-
justify-content: center;
|
|
39
|
-
align-items: center;
|
|
40
|
-
transition: opacity 0.5s ease;
|
|
41
|
-
display: none;
|
|
42
|
-
"
|
|
43
|
-
>
|
|
29
|
+
<a href="#accessibility-report-root" class="skip-link">Skip to main content</a>
|
|
30
|
+
|
|
31
|
+
<div id="loader-overlay" class="loader-overlay hidden" aria-live="polite" aria-busy="true">
|
|
44
32
|
<div class="loader-pulse">
|
|
45
|
-
<span class="material-symbols-outlined"
|
|
33
|
+
<span class="material-symbols-outlined fs-32" aria-hidden="true">query_stats</span>
|
|
46
34
|
</div>
|
|
47
35
|
<div class="loader-text">Compiling Audit Results</div>
|
|
48
36
|
</div>
|
|
49
37
|
|
|
50
|
-
<header>
|
|
51
|
-
<
|
|
52
|
-
<div class="brand-icon">
|
|
53
|
-
<span class="material-symbols-outlined
|
|
38
|
+
<header role="banner">
|
|
39
|
+
<div class="brand">
|
|
40
|
+
<div class="brand-icon" aria-hidden="true">
|
|
41
|
+
<span class="material-symbols-outlined fs-6"
|
|
54
42
|
>accessibility_new</span
|
|
55
43
|
>
|
|
56
44
|
</div>
|
|
57
45
|
<h1 class="brand-text">Accessibility Audit</h1>
|
|
58
|
-
</
|
|
59
|
-
<
|
|
46
|
+
</div>
|
|
47
|
+
<nav class="header-actions d-flex-align-center gap-16" aria-label="Quick Actions">
|
|
60
48
|
<a href="../summary.html" class="btn btn-link btn-sm btn-back">
|
|
61
|
-
<span class="material-symbols-outlined btn-back-icon">arrow_back</span>
|
|
49
|
+
<span class="material-symbols-outlined btn-back-icon" aria-hidden="true">arrow_back</span>
|
|
62
50
|
Back to Summary
|
|
63
51
|
</a>
|
|
64
52
|
<button
|
|
@@ -66,33 +54,39 @@
|
|
|
66
54
|
class="btn btn-outline-primary btn-sm btn-token"
|
|
67
55
|
data-bs-toggle="modal"
|
|
68
56
|
data-bs-target="#tokenModal"
|
|
69
|
-
|
|
70
|
-
<span class="material-symbols-outlined btn-token-icon">key</span>
|
|
57
|
+
aria-label="Manage ADO Token">
|
|
58
|
+
<span class="material-symbols-outlined btn-token-icon" aria-hidden="true">key</span>
|
|
71
59
|
ADO Token
|
|
72
60
|
</button>
|
|
73
|
-
</
|
|
61
|
+
</nav>
|
|
74
62
|
</header>
|
|
75
63
|
|
|
76
|
-
<
|
|
64
|
+
<main class="container hidden" id="accessibility-report-root">
|
|
77
65
|
<!-- Hero Section -->
|
|
78
66
|
<section class="page-hero">
|
|
79
67
|
<div class="hero-content">
|
|
80
68
|
<h2>Target Resource</h2>
|
|
81
69
|
<p class="page-url" id="a11y-page-url"></p>
|
|
70
|
+
<div
|
|
71
|
+
class="hero-meta mt-2 hidden"
|
|
72
|
+
id="a11y-browser-container"
|
|
73
|
+
style="font-size: 0.9rem; opacity: 0.8; font-family: Inter, sans-serif;"
|
|
74
|
+
>
|
|
75
|
+
<b>Browser:</b> <span id="a11y-browser-text"></span>
|
|
76
|
+
</div>
|
|
82
77
|
</div>
|
|
83
78
|
<div class="stats-pills">
|
|
84
79
|
<div
|
|
85
|
-
class="stat-pill stat-pill-passed"
|
|
80
|
+
class="stat-pill stat-pill-passed hidden"
|
|
86
81
|
id="a11y-pill-passed"
|
|
87
|
-
style="display: none"
|
|
88
82
|
>
|
|
89
|
-
<span class="material-symbols-outlined
|
|
83
|
+
<span class="material-symbols-outlined fs-20"
|
|
90
84
|
>verified</span
|
|
91
85
|
>
|
|
92
86
|
No Violations
|
|
93
87
|
</div>
|
|
94
88
|
|
|
95
|
-
<div class="stat-pill" id="a11y-pill-failed"
|
|
89
|
+
<div class="stat-pill stat-pill-failed hidden" id="a11y-pill-failed">
|
|
96
90
|
<span class="material-symbols-outlined stat-pill-icon">bug_report</span>
|
|
97
91
|
<span><span id="a11y-failed-count"></span> Issues</span>
|
|
98
92
|
</div>
|
|
@@ -100,23 +94,20 @@
|
|
|
100
94
|
</section>
|
|
101
95
|
|
|
102
96
|
<!-- Video Card -->
|
|
103
|
-
<div class="video-card" id="a11y-video-card"
|
|
97
|
+
<div class="video-card hidden" id="a11y-video-card">
|
|
104
98
|
<div class="video-header">
|
|
105
99
|
<div class="video-icon-wrap">
|
|
106
100
|
<span class="material-symbols-outlined">videocam</span>
|
|
107
101
|
</div>
|
|
108
102
|
<h2 class="video-title">Execution Recording</h2>
|
|
109
103
|
</div>
|
|
110
|
-
<div class="video-container">
|
|
111
|
-
|
|
112
|
-
<source id="a11y-video-source" type="video/webm" />
|
|
113
|
-
Your browser does not support the video tag.
|
|
114
|
-
</video>
|
|
104
|
+
<div class="video-container" id="a11y-videos-list">
|
|
105
|
+
<!-- Multiple videos will be injected here if available -->
|
|
115
106
|
</div>
|
|
116
107
|
</div>
|
|
117
108
|
|
|
118
109
|
<!-- Success State -->
|
|
119
|
-
<div class="success-verified-card" id="a11y-success-card"
|
|
110
|
+
<div class="success-verified-card hidden" id="a11y-success-card">
|
|
120
111
|
<div class="success-content-layout">
|
|
121
112
|
<div class="success-icon-container">
|
|
122
113
|
<span class="material-symbols-outlined">verified_user</span>
|
|
@@ -142,7 +133,7 @@
|
|
|
142
133
|
<span class="violation-rule-info">
|
|
143
134
|
<span class="rule-name"></span>
|
|
144
135
|
<span class="rule-sep">•</span>
|
|
145
|
-
<span class="rule-wcag-tags
|
|
136
|
+
<span class="rule-wcag-tags ms-2"></span>
|
|
146
137
|
</span>
|
|
147
138
|
</div>
|
|
148
139
|
<span class="severity-badge"></span>
|
|
@@ -165,7 +156,7 @@
|
|
|
165
156
|
</div>
|
|
166
157
|
</div>
|
|
167
158
|
|
|
168
|
-
<div class="instances-list
|
|
159
|
+
<div class="instances-list mt-16">
|
|
169
160
|
<h4 class="instances-title">
|
|
170
161
|
<span class="material-symbols-outlined instances-icon"
|
|
171
162
|
>preview</span
|
|
@@ -187,17 +178,17 @@
|
|
|
187
178
|
data-bs-target=""
|
|
188
179
|
aria-expanded="false"
|
|
189
180
|
>
|
|
190
|
-
<div class="d-flex
|
|
181
|
+
<div class="d-flex-align-center gap-3 max-w-75">
|
|
191
182
|
<span class="material-symbols-outlined chevron">expand_more</span>
|
|
192
183
|
<div class="bug-snippet">
|
|
193
|
-
<strong
|
|
184
|
+
<strong class="text-primary bug-rule-name"></strong
|
|
194
185
|
>:
|
|
195
186
|
<span class="bug-snippet-text"></span>
|
|
196
187
|
</div>
|
|
197
188
|
</div>
|
|
198
189
|
<div class="d-flex gap-2">
|
|
199
190
|
<button class="btn btn-sm btn-bug log-bug-btn" type="button">
|
|
200
|
-
<span class="material-symbols-outlined
|
|
191
|
+
<span class="material-symbols-outlined fs-16"
|
|
201
192
|
>bug_report</span
|
|
202
193
|
>
|
|
203
194
|
Log Bug
|
|
@@ -208,18 +199,16 @@
|
|
|
208
199
|
<div id="" class="collapse bug-item-body-collapse">
|
|
209
200
|
<div class="bug-details-body">
|
|
210
201
|
<!-- Left: Repro Steps -->
|
|
211
|
-
<div
|
|
202
|
+
<div class="mb-3">
|
|
212
203
|
<div class="bug-section-title">Reproduction Steps</div>
|
|
213
|
-
<div class="bug-content-box bug-failure-summary">
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
scan.</span
|
|
217
|
-
>
|
|
204
|
+
<div class="bug-content-box bug-failure-summary text-muted fst-italic">
|
|
205
|
+
No interaction steps recorded. Issue found via static
|
|
206
|
+
scan.
|
|
218
207
|
</div>
|
|
219
208
|
</div>
|
|
220
209
|
|
|
221
210
|
<!-- Right: Visual -->
|
|
222
|
-
<div class="visual-evidence-section
|
|
211
|
+
<div class="visual-evidence-section hidden">
|
|
223
212
|
<div class="bug-section-title">Visual Evidence</div>
|
|
224
213
|
<div class="screenshot-container">
|
|
225
214
|
<img class="bug-screenshot" alt="Violation Evidence" />
|
|
@@ -242,6 +231,7 @@
|
|
|
242
231
|
type="button"
|
|
243
232
|
class="btn-close"
|
|
244
233
|
data-bs-dismiss="modal"
|
|
234
|
+
aria-label="Close"
|
|
245
235
|
></button>
|
|
246
236
|
</div>
|
|
247
237
|
<div class="modal-body modal-body-custom">
|
|
@@ -257,6 +247,7 @@
|
|
|
257
247
|
class="form-control token-input"
|
|
258
248
|
id="tokenInput"
|
|
259
249
|
placeholder="Enter PAT Token"
|
|
250
|
+
aria-label="Personal Access Token"
|
|
260
251
|
required
|
|
261
252
|
/>
|
|
262
253
|
</div>
|
|
@@ -279,8 +270,7 @@
|
|
|
279
270
|
<div class="modal-header">
|
|
280
271
|
<div class="modal-title">
|
|
281
272
|
<span
|
|
282
|
-
class="material-symbols-outlined"
|
|
283
|
-
style="color: #cc293d; font-size: 24px"
|
|
273
|
+
class="material-symbols-outlined text-critical fs-24"
|
|
284
274
|
>bug_report</span
|
|
285
275
|
>
|
|
286
276
|
New Bug Entry - Azure DevOps
|
|
@@ -294,7 +284,7 @@
|
|
|
294
284
|
</div>
|
|
295
285
|
<div class="modal-body">
|
|
296
286
|
<div class="ado-field-group">
|
|
297
|
-
<label class="ado-form-label">Title</label>
|
|
287
|
+
<label class="ado-form-label" for="bugTitleInput">Title</label>
|
|
298
288
|
<input
|
|
299
289
|
type="text"
|
|
300
290
|
id="bugTitleInput"
|
|
@@ -306,7 +296,7 @@
|
|
|
306
296
|
<div class="row">
|
|
307
297
|
<div class="col-md-6">
|
|
308
298
|
<div class="ado-field-group">
|
|
309
|
-
<label class="ado-form-label">Severity</label>
|
|
299
|
+
<label class="ado-form-label" for="bugSeverityInput">Severity</label>
|
|
310
300
|
<select id="bugSeverityInput" class="ado-form-input">
|
|
311
301
|
<option value="critical">Critical (Priority 1)</option>
|
|
312
302
|
<option value="serious">Serious (Priority 2)</option>
|
|
@@ -317,7 +307,7 @@
|
|
|
317
307
|
</div>
|
|
318
308
|
<div class="col-md-6">
|
|
319
309
|
<div class="ado-field-group">
|
|
320
|
-
<label class="ado-form-label">Target Area</label>
|
|
310
|
+
<label class="ado-form-label" for="bugAreaInput">Target Area</label>
|
|
321
311
|
<input
|
|
322
312
|
type="text"
|
|
323
313
|
id="bugAreaInput"
|
|
@@ -332,23 +322,17 @@
|
|
|
332
322
|
<label class="ado-form-label">Reproduction Steps & Description</label>
|
|
333
323
|
<div
|
|
334
324
|
id="bugReproPreview"
|
|
335
|
-
class="ado-repro-preview"
|
|
336
|
-
style="min-height: 150px"
|
|
325
|
+
class="ado-repro-preview min-h-150"
|
|
337
326
|
></div>
|
|
338
327
|
</div>
|
|
339
328
|
|
|
340
329
|
<!-- Visual Evidence - Single Column Full Width -->
|
|
341
330
|
<div
|
|
342
|
-
class="ado-field-group"
|
|
343
|
-
id="screenshotThumbContainer"
|
|
344
|
-
style="display: none"
|
|
345
|
-
>
|
|
331
|
+
class="ado-field-group hidden"
|
|
332
|
+
id="screenshotThumbContainer">
|
|
346
333
|
<label class="ado-form-label">
|
|
347
334
|
<span
|
|
348
|
-
class="material-symbols-outlined"
|
|
349
|
-
style="font-size: 14px; vertical-align: middle"
|
|
350
|
-
>image</span
|
|
351
|
-
>
|
|
335
|
+
class="material-symbols-outlined fs-14 v-align-middle">image</span>
|
|
352
336
|
Violation Screenshot
|
|
353
337
|
</label>
|
|
354
338
|
<img
|
|
@@ -359,13 +343,10 @@
|
|
|
359
343
|
/>
|
|
360
344
|
</div>
|
|
361
345
|
|
|
362
|
-
<div class="ado-field-group" id="videoThumbContainer"
|
|
346
|
+
<div class="ado-field-group hidden" id="videoThumbContainer">
|
|
363
347
|
<label class="ado-form-label">
|
|
364
348
|
<span
|
|
365
|
-
class="material-symbols-outlined"
|
|
366
|
-
style="font-size: 14px; vertical-align: middle"
|
|
367
|
-
>videocam</span
|
|
368
|
-
>
|
|
349
|
+
class="material-symbols-outlined fs-14 v-align-middle">videocam</span>
|
|
369
350
|
Session Recording
|
|
370
351
|
</label>
|
|
371
352
|
<video id="bugVideoPreview" class="video-preview-player" controls>
|
|
@@ -373,51 +354,37 @@
|
|
|
373
354
|
</video>
|
|
374
355
|
</div>
|
|
375
356
|
|
|
376
|
-
<div class="ado-field-group
|
|
377
|
-
<div
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
border-color: #f9f0c3;
|
|
383
|
-
padding: 12px;
|
|
384
|
-
line-height: 1.5;
|
|
385
|
-
"
|
|
386
|
-
>
|
|
387
|
-
<b>Environment:</b> Playwright engine • <b>URL:</b>
|
|
388
|
-
<span
|
|
389
|
-
id="bugUrlPreview"
|
|
390
|
-
style="word-break: break-all; color: var(--primary)"
|
|
391
|
-
></span>
|
|
357
|
+
<div class="ado-field-group mb-0">
|
|
358
|
+
<div class="ado-repro-preview ado-repro-env">
|
|
359
|
+
<b>Environment:</b> Playwright engine •
|
|
360
|
+
<b>Browser:</b> <span id="bugBrowserPreview" class="text-primary me-2"></span>
|
|
361
|
+
• <b>URL:</b>
|
|
362
|
+
<span id="bugUrlPreview" class="text-primary break-all"></span>
|
|
392
363
|
</div>
|
|
393
364
|
</div>
|
|
394
365
|
</div>
|
|
395
366
|
<div class="modal-footer">
|
|
396
367
|
<button
|
|
397
368
|
type="button"
|
|
398
|
-
class="btn-ado-secondary btn btn-outline-secondary"
|
|
399
|
-
data-bs-dismiss="modal"
|
|
400
|
-
style="border-radius: 12px; font-weight: 700"
|
|
401
|
-
>
|
|
369
|
+
class="btn-ado-secondary btn btn-outline-secondary rounded-12 fw-bold"
|
|
370
|
+
data-bs-dismiss="modal">
|
|
402
371
|
Cancel
|
|
403
372
|
</button>
|
|
404
373
|
<button
|
|
405
374
|
type="button"
|
|
406
375
|
id="confirmBugBtn"
|
|
407
|
-
class="btn-ado-primary btn btn-primary"
|
|
408
|
-
style="border-radius: 12px; font-weight: 700"
|
|
409
|
-
>
|
|
376
|
+
class="btn-ado-primary btn btn-primary rounded-12 fw-bold">
|
|
410
377
|
Create Bug
|
|
411
378
|
</button>
|
|
412
379
|
</div>
|
|
413
380
|
</div>
|
|
414
381
|
</div>
|
|
415
|
-
</
|
|
382
|
+
</main>
|
|
416
383
|
|
|
417
384
|
<footer>
|
|
418
385
|
<div class="powered-by">Generated by <span class="badge-tool">Snap Ally</span></div>
|
|
419
386
|
<div>
|
|
420
|
-
<span
|
|
387
|
+
<span class="opacity-75">© <span id="year"></span> Snap Ally</span>
|
|
421
388
|
</div>
|
|
422
389
|
</footer>
|
|
423
390
|
|