playwright-reborn 0.2.2 → 0.2.3

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/status.js CHANGED
@@ -9,12 +9,12 @@ exports.summaryLine = summaryLine;
9
9
  function displayStatus(pwOutcome, status) {
10
10
  if (pwOutcome === 'flaky')
11
11
  return 'flaky';
12
+ if (status === 'interrupted')
13
+ return 'interrupted';
12
14
  if (pwOutcome === 'skipped' || status === 'skipped')
13
15
  return 'skipped';
14
16
  if (status === 'timedOut')
15
17
  return 'timedOut';
16
- if (status === 'interrupted')
17
- return 'interrupted';
18
18
  if (pwOutcome === 'unexpected')
19
19
  return 'failed';
20
20
  if (status === 'failed')
@@ -62,8 +62,8 @@ function summaryLine(counts) {
62
62
  return counts.passed === 1 ? '1 passed.' : `${counts.passed} passed.`;
63
63
  }
64
64
  if (problems.length === 0) {
65
- return `${counts.passed} passed, ${counts.skipped} skipped. ${counts.total} ran.`;
65
+ return `${counts.passed} passed, ${counts.skipped} skipped. ${counts.total} tests.`;
66
66
  }
67
- return `${problems.join(', ')}. ${counts.total} ran.`;
67
+ return `${problems.join(', ')}. ${counts.total} tests.`;
68
68
  }
69
69
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  src: url("fonts/geist-latin-400-normal.woff2") format("woff2");
4
4
  font-weight: 400;
5
5
  font-style: normal;
6
- font-display: block;
6
+ font-display: swap;
7
7
  }
8
8
 
9
9
  @font-face {
@@ -11,7 +11,7 @@
11
11
  src: url("fonts/geist-latin-500-normal.woff2") format("woff2");
12
12
  font-weight: 500;
13
13
  font-style: normal;
14
- font-display: block;
14
+ font-display: swap;
15
15
  }
16
16
 
17
17
  @font-face {
@@ -19,7 +19,7 @@
19
19
  src: url("fonts/geist-latin-600-normal.woff2") format("woff2");
20
20
  font-weight: 600;
21
21
  font-style: normal;
22
- font-display: block;
22
+ font-display: swap;
23
23
  }
24
24
 
25
25
  @font-face {
@@ -27,25 +27,25 @@
27
27
  src: url("fonts/jetbrains-mono-latin-500-normal.woff2") format("woff2");
28
28
  font-weight: 500;
29
29
  font-style: normal;
30
- font-display: block;
30
+ font-display: swap;
31
31
  }
32
32
 
33
33
  :root {
34
34
  color-scheme: dark;
35
35
  --base: #080808;
36
36
  --surface: #111111;
37
- --border: #1a1a1a;
37
+ --border: #2b302e;
38
38
  --text: #f0f0f0;
39
- --subtle: #888888;
39
+ --subtle: #a2aaa6;
40
40
  --accent: #00ff88;
41
41
  --accent-hover: #00cf6e;
42
42
  --wash: rgba(0, 255, 136, 0.16);
43
43
  --hairline: rgba(255, 255, 255, 0.08);
44
- --pass: rgba(255, 255, 255, 0.22);
45
- --fail: #00ff88;
46
- --flaky: rgba(0, 255, 136, 0.45);
44
+ --pass: #96cbb0;
45
+ --fail: #ff8989;
46
+ --flaky: #edc66f;
47
47
  --skip: #888888;
48
- --timeout: #00ff88;
48
+ --timeout: #edc66f;
49
49
  --interrupted: #888888;
50
50
  --sans: Geist, "Segoe UI", sans-serif;
51
51
  --display: Geist, "Segoe UI", sans-serif;
@@ -57,32 +57,24 @@ body[data-accent="red"] {
57
57
  --accent: #ff4d4d;
58
58
  --accent-hover: #e03b3b;
59
59
  --wash: rgba(255, 77, 77, 0.16);
60
- --fail: #ff4d4d;
61
- --timeout: #ff4d4d;
62
60
  }
63
61
 
64
62
  body[data-accent="blue"] {
65
63
  --accent: #4da3ff;
66
64
  --accent-hover: #2f86e0;
67
65
  --wash: rgba(77, 163, 255, 0.16);
68
- --fail: #4da3ff;
69
- --timeout: #4da3ff;
70
66
  }
71
67
 
72
68
  body[data-accent="amber"] {
73
69
  --accent: #ffb020;
74
70
  --accent-hover: #e09610;
75
71
  --wash: rgba(255, 176, 32, 0.16);
76
- --fail: #ffb020;
77
- --timeout: #ffb020;
78
72
  }
79
73
 
80
74
  body[data-accent="violet"] {
81
75
  --accent: #b07cff;
82
76
  --accent-hover: #945fe0;
83
77
  --wash: rgba(176, 124, 255, 0.16);
84
- --fail: #b07cff;
85
- --timeout: #b07cff;
86
78
  }
87
79
 
88
80
  * { box-sizing: border-box; }
@@ -91,7 +83,7 @@ body[data-accent="violet"] {
91
83
 
92
84
  body {
93
85
  margin: 0;
94
- background: #050806;
86
+ background: var(--base);
95
87
  color: var(--text);
96
88
  font-family: var(--sans);
97
89
  font-size: 15px;
@@ -109,16 +101,12 @@ body {
109
101
  background: var(--accent);
110
102
  color: #080808;
111
103
  padding: 8px 12px;
112
- z-index: 2;
104
+ z-index: 10;
113
105
  }
114
106
 
115
107
  .skip:focus { top: 12px; }
116
108
 
117
- .page {
118
- width: min(1120px, calc(100% - 48px));
119
- margin: 0 auto;
120
- padding: 28px 0 64px;
121
- }
109
+
122
110
 
123
111
  button, input { font: inherit; color: inherit; }
124
112
  button { cursor: pointer; }
@@ -216,9 +204,7 @@ button { cursor: pointer; }
216
204
  color: var(--text);
217
205
  }
218
206
 
219
- .word[data-status="failed"],
220
- .word[data-status="timedOut"],
221
- .word[data-status="interrupted"] { color: var(--text); }
207
+
222
208
 
223
209
  .product {
224
210
  margin: 10px 0 0;
@@ -229,15 +215,7 @@ button { cursor: pointer; }
229
215
  line-height: 1.15;
230
216
  }
231
217
 
232
- .time {
233
- margin: 0;
234
- font-weight: 500;
235
- font-size: clamp(48px, 7vw, 64px);
236
- line-height: 1;
237
- letter-spacing: -0.04em;
238
- color: var(--accent);
239
- font-variant-numeric: tabular-nums;
240
- }
218
+
241
219
 
242
220
  .summary {
243
221
  flex-basis: 100%;
@@ -659,8 +637,8 @@ button { cursor: pointer; }
659
637
 
660
638
  .detail {
661
639
  position: sticky;
662
- top: 18px;
663
- max-height: calc(100vh - 36px);
640
+ top: 76px;
641
+ max-height: calc(100vh - 94px);
664
642
  overflow: auto;
665
643
  padding: 18px 0 24px 28px;
666
644
  background: transparent;
@@ -942,7 +920,8 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
942
920
  .find-wrap { margin-left: 0; width: 100%; }
943
921
  .find { width: 100%; }
944
922
  .split { grid-template-columns: 1fr; }
945
- .detail { position: static; max-height: none; padding-left: 0; }
923
+ .detail { position: static; max-height: none; padding-left: 0; border-top: 1px solid var(--border); }
924
+ #tests { max-height: 45vh; overflow-y: auto; overscroll-behavior: contain; padding-bottom: 12px; }
946
925
  }
947
926
 
948
927
  .atmosphere {
@@ -950,7 +929,7 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
950
929
  inset: 0;
951
930
  z-index: 0;
952
931
  pointer-events: none;
953
- background: #050806;
932
+ background: var(--base);
954
933
  overflow: hidden;
955
934
  }
956
935
 
@@ -963,6 +942,7 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
963
942
  height: 100%;
964
943
  display: block;
965
944
  filter: blur(18px) saturate(1.05);
945
+ opacity: 0.3;
966
946
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 18%, rgba(0, 0, 0, 0.4) 34%, transparent 52%);
967
947
  mask-image: linear-gradient(180deg, #000 0%, #000 18%, rgba(0, 0, 0, 0.4) 34%, transparent 52%);
968
948
  }
@@ -970,7 +950,7 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
970
950
  .grain {
971
951
  position: absolute;
972
952
  inset: -20%;
973
- opacity: 0.07;
953
+ opacity: 0.035;
974
954
  mix-blend-mode: overlay;
975
955
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.85'/></svg>");
976
956
  background-size: 180px 180px;
@@ -1007,9 +987,11 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1007
987
  flex-direction: row;
1008
988
  align-items: center;
1009
989
  gap: 28px;
1010
- padding: 12px 16px;
990
+ padding: 12px clamp(20px, 3vw, 48px);
1011
991
  border-right: 0;
1012
- background: linear-gradient(180deg, rgba(5, 8, 6, 0.72), rgba(5, 8, 6, 0.35) 70%, rgba(5, 8, 6, 0));
992
+ background: rgba(8, 8, 8, 0.9);
993
+ backdrop-filter: blur(16px);
994
+ border-bottom: 1px solid var(--hairline);
1013
995
  transition: transform 220ms ease;
1014
996
  }
1015
997
 
@@ -1019,11 +1001,15 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1019
1001
  }
1020
1002
 
1021
1003
  .rail .meta { margin: 0 0 0 auto; flex-direction: row; gap: 16px; justify-content: flex-end; text-align: right; }
1022
- .rail .meta span { white-space: nowrap; }
1004
+ .rail .meta { min-width: 0; }
1005
+ .rail .meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 30ch; }
1023
1006
 
1024
1007
  .rail .tabbar {
1025
1008
  flex-direction: row;
1026
1009
  align-items: center;
1010
+ width: auto;
1011
+ flex: 1;
1012
+ min-width: 0;
1027
1013
  gap: 22px;
1028
1014
  margin: 0;
1029
1015
  padding: 0;
@@ -1043,21 +1029,22 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1043
1029
  }
1044
1030
 
1045
1031
  .stage {
1046
- width: 100%;
1047
- margin: 0;
1048
- padding: 20px 16px 48px;
1032
+ width: min(1440px, 100%);
1033
+ margin: 0 auto;
1034
+ padding: 24px clamp(20px, 3vw, 48px) 48px;
1049
1035
  }
1050
1036
 
1051
1037
  .hero { margin: 8px 0 28px; }
1052
1038
 
1053
1039
  .word {
1054
- font-size: clamp(64px, 8vw, 96px);
1040
+ font-size: clamp(42px, 6vw, 80px);
1055
1041
  font-weight: 500;
1056
1042
  letter-spacing: -0.045em;
1057
- max-width: 14ch;
1043
+ max-width: 100%;
1044
+ overflow-wrap: anywhere;
1058
1045
  }
1059
1046
 
1060
- .time { display: none; }
1047
+
1061
1048
 
1062
1049
  #panel-tests,
1063
1050
  #panel-screenshots,
@@ -1176,17 +1163,86 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1176
1163
  }
1177
1164
 
1178
1165
  @media (max-width: 800px) {
1179
- .rail { flex-wrap: wrap; gap: 12px 18px; padding: 16px; }
1166
+ .rail { flex-wrap: wrap; gap: 12px 18px; padding: 8px 16px; }
1180
1167
  .rail .meta { display: none; }
1181
- .rail .tabbar { flex-wrap: wrap; width: 100%; }
1168
+ .rail .tabbar { flex-wrap: nowrap; overflow-x: auto; width: 100%; gap: 20px; }
1169
+ .rail .tab { flex: 0 0 auto; min-height: 44px; }
1182
1170
  .stage { width: 100%; padding: 12px 16px 40px; }
1183
1171
  #legend.legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1184
1172
  .charts { grid-template-columns: 1fr; }
1173
+ .pie { width: 180px; margin: 0 auto; }
1185
1174
  #legend .count { border-right: 0; }
1186
1175
  .evidence { grid-template-columns: 1fr; }
1187
- .hero { margin: 24px 0 32px; }
1176
+ .hero { margin: 12px 0 28px; }
1177
+ .run-state { margin: 12px 0 0; }
1178
+ .count, .tag-btn, .project-btn, .order-btn, .band-clear, .view, .subtab, .attempt, .open-test, .more, .reset-filters { min-height: 40px; }
1188
1179
  }
1189
1180
 
1190
1181
  @media (prefers-reduced-motion: reduce) {
1191
1182
  .hero, .strip-window, .bands, .grain, .rail { animation: none; transition: none; }
1192
1183
  }
1184
+
1185
+ /* State colors communicate outcomes independently of the chosen brand accent. */
1186
+ .run-state {
1187
+ display: inline-flex;
1188
+ align-items: center;
1189
+ gap: 8px;
1190
+ flex: 0 0 auto;
1191
+ margin: 4px 0 0;
1192
+ padding: 6px 12px;
1193
+ border: 1px solid currentColor;
1194
+ border-radius: 20px;
1195
+ font-size: 13px;
1196
+ color: var(--subtle);
1197
+ }
1198
+ .run-state::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
1199
+ .run-state[data-status="passed"] { color: var(--pass); }
1200
+ .run-state[data-status="failed"] { color: var(--fail); }
1201
+ .run-state[data-status="timedout"], .run-state[data-status="interrupted"] { color: var(--timeout); }
1202
+ .sw[data-status="passed"] { color: var(--pass); }
1203
+ .sw[data-status="failed"], .sw[data-status="timedOut"] { color: var(--fail); }
1204
+ .sw[data-status="flaky"] { color: var(--flaky); }
1205
+ .row[data-status="failed"], .row[data-status="timedOut"] { border-left-color: var(--fail); }
1206
+ .row[data-status="flaky"] { border-left-color: var(--flaky); }
1207
+ .run-fill[data-status="failed"], .run-fill[data-status="timedOut"] { background: var(--fail); }
1208
+ .run-fill[data-status="flaky"] { background: var(--flaky); }
1209
+ .run-row[data-status="failed"], .run-row[data-status="timedOut"] { box-shadow: inset 2px 0 0 var(--fail); }
1210
+ .run-row[data-status="flaky"] { box-shadow: inset 2px 0 0 var(--flaky); }
1211
+ #legend .count[data-status="failed"] .n, #legend .count[data-status="timedOut"] .n { color: var(--fail); }
1212
+ #legend .count[data-status="flaky"] .n { color: var(--flaky); }
1213
+ #legend .count[aria-pressed="true"] { box-shadow: inset 0 -2px 0 var(--accent); }
1214
+ #legend.legend { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 12px; }
1215
+ .charts:has(> .bars:only-child) { grid-template-columns: 1fr; }
1216
+ .hero > div, .info-row, .file-row, .row-meta, .stage, .rail, .detail { min-width: 0; }
1217
+ .info dd, .where, .file-name, .tile-title, .tile-meta, .now-file, .detail h2, .file-group h3, .step, .row-meta { overflow-wrap: anywhere; }
1218
+ .row-meta { flex-wrap: wrap; gap: 2px 12px; }
1219
+ .band { padding: 6px 0; }
1220
+ .band:hover .band-label { color: var(--text); }
1221
+ .find { padding: 8px 10px; border: 1px solid var(--border); background: rgba(8, 8, 8, 0.65); border-radius: 6px; }
1222
+ .find:focus { border-color: var(--accent); }
1223
+ .list-summary { display: flex; align-items: center; gap: 16px; margin: 18px 0 10px; color: var(--subtle); font-size: 13px; }
1224
+ .reset-filters { background: none; border: 0; color: var(--accent); padding: 4px 0; }
1225
+ .split { grid-template-columns: minmax(260px, 34%) minmax(0, 1fr); }
1226
+ #tests { padding-right: 16px; }
1227
+ .detail { border-left: 1px solid var(--border); }
1228
+ .row { padding: 12px; border-left-width: 2px; border-radius: 0 4px 4px 0; }
1229
+ .row[aria-current="true"] { background: var(--wash); }
1230
+ .error { border-left-color: var(--fail); }
1231
+ .step.bad .mark { background: var(--fail); }
1232
+ .gallery .tile { border-radius: 8px; background: rgba(17, 17, 17, 0.6); }
1233
+ .tile img { object-fit: contain; background: var(--base); }
1234
+ .well pre { padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 6px; }
1235
+ dialog { border: 1px solid var(--border); border-radius: 8px; padding: 12px; max-height: 95vh; }
1236
+ dialog img { max-width: calc(92vw - 26px); object-fit: contain; }
1237
+ .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
1238
+ @media (max-width: 800px) {
1239
+ .split { grid-template-columns: minmax(0, 1fr); }
1240
+ .detail { border-left: 0; padding-top: 20px; }
1241
+ #tests { padding-right: 0; }
1242
+ #legend.legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1243
+ .info { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
1244
+ .run-state { margin-top: 12px; }
1245
+ }
1246
+ @media (prefers-reduced-motion: reduce) {
1247
+ *, *::before, *::after { scroll-behavior: auto !important; }
1248
+ }