playwright-reborn 0.2.1 → 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.
@@ -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,20 +204,19 @@ 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); }
222
207
 
223
- .time {
224
- margin: 0;
208
+
209
+ .product {
210
+ margin: 10px 0 0;
211
+ color: var(--text);
212
+ font-size: clamp(22px, 3vw, 32px);
225
213
  font-weight: 500;
226
- font-size: clamp(48px, 7vw, 64px);
227
- line-height: 1;
228
- letter-spacing: -0.04em;
229
- color: var(--accent);
230
- font-variant-numeric: tabular-nums;
214
+ letter-spacing: -0.03em;
215
+ line-height: 1.15;
231
216
  }
232
217
 
218
+
219
+
233
220
  .summary {
234
221
  flex-basis: 100%;
235
222
  margin: 8px 0 0;
@@ -422,48 +409,39 @@ button { cursor: pointer; }
422
409
  box-shadow: inset 0 -1px 0 var(--accent);
423
410
  }
424
411
 
425
- #duration.legend {
412
+ .charts {
426
413
  display: grid;
427
- grid-template-columns: repeat(4, minmax(0, 1fr));
428
- gap: 1px;
429
- margin-top: 8px;
414
+ grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
415
+ gap: 28px 36px;
416
+ align-items: center;
417
+ margin-top: 12px;
430
418
  }
431
419
 
432
- #duration .band {
433
- display: flex;
434
- flex-direction: column;
435
- align-items: flex-start;
436
- gap: 6px;
420
+ .pie { width: min(240px, 100%); height: auto; display: block; }
421
+ .slice { cursor: pointer; }
422
+
423
+ .bars { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
424
+
425
+ .band {
426
+ display: grid;
427
+ grid-template-columns: 12px minmax(0, 1fr) auto;
428
+ grid-template-rows: auto 6px;
429
+ gap: 6px 10px;
437
430
  width: 100%;
438
431
  background: transparent;
439
432
  border: 0;
440
- padding: 4px 16px 4px 0;
433
+ padding: 0;
441
434
  color: var(--subtle);
442
435
  text-align: left;
443
436
  }
444
437
 
445
- #duration .band .n {
446
- color: var(--text);
447
- font-size: 28px;
448
- line-height: 1;
449
- letter-spacing: -0.04em;
450
- }
451
-
452
- #duration .band[aria-pressed="true"] .n { color: var(--accent); }
453
-
438
+ .swatch { width: 12px; height: 12px; margin-top: 3px; }
439
+ .band .n { color: var(--text); font-size: 16px; letter-spacing: 0; }
454
440
  .band-label { font-size: 14px; }
455
-
456
- .band-track {
457
- width: 100%;
458
- height: 4px;
459
- background: var(--hairline);
460
- }
461
-
462
- .band-fill {
463
- display: block;
464
- height: 100%;
465
- background: var(--accent);
466
- }
441
+ .band-track { grid-column: 2 / -1; height: 6px; background: var(--hairline); }
442
+ .band-fill { display: block; height: 100%; background: var(--accent); }
443
+ .band[aria-pressed="true"] .band-label,
444
+ .band[aria-pressed="true"] .n { color: var(--accent); }
467
445
 
468
446
  .order {
469
447
  display: flex;
@@ -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
 
@@ -1018,11 +1000,16 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1018
1000
  pointer-events: none;
1019
1001
  }
1020
1002
 
1021
- .rail .meta { margin: 0 0 0 auto; flex-direction: row; gap: 16px; justify-content: flex-end; max-width: 46%; text-align: right; }
1003
+ .rail .meta { margin: 0 0 0 auto; flex-direction: row; gap: 16px; justify-content: flex-end; text-align: right; }
1004
+ .rail .meta { min-width: 0; }
1005
+ .rail .meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 30ch; }
1022
1006
 
1023
1007
  .rail .tabbar {
1024
1008
  flex-direction: row;
1025
1009
  align-items: center;
1010
+ width: auto;
1011
+ flex: 1;
1012
+ min-width: 0;
1026
1013
  gap: 22px;
1027
1014
  margin: 0;
1028
1015
  padding: 0;
@@ -1042,21 +1029,22 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1042
1029
  }
1043
1030
 
1044
1031
  .stage {
1045
- width: 100%;
1046
- margin: 0;
1047
- padding: 20px 16px 48px;
1032
+ width: min(1440px, 100%);
1033
+ margin: 0 auto;
1034
+ padding: 24px clamp(20px, 3vw, 48px) 48px;
1048
1035
  }
1049
1036
 
1050
1037
  .hero { margin: 8px 0 28px; }
1051
1038
 
1052
1039
  .word {
1053
- font-size: clamp(64px, 8vw, 96px);
1040
+ font-size: clamp(42px, 6vw, 80px);
1054
1041
  font-weight: 500;
1055
1042
  letter-spacing: -0.045em;
1056
- max-width: 14ch;
1043
+ max-width: 100%;
1044
+ overflow-wrap: anywhere;
1057
1045
  }
1058
1046
 
1059
- .time { display: none; }
1047
+
1060
1048
 
1061
1049
  #panel-tests,
1062
1050
  #panel-screenshots,
@@ -1175,16 +1163,86 @@ dialog::backdrop { background: rgba(8, 8, 8, 0.92); }
1175
1163
  }
1176
1164
 
1177
1165
  @media (max-width: 800px) {
1178
- .rail { flex-wrap: wrap; gap: 12px 18px; padding: 16px; }
1166
+ .rail { flex-wrap: wrap; gap: 12px 18px; padding: 8px 16px; }
1179
1167
  .rail .meta { display: none; }
1180
- .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; }
1181
1170
  .stage { width: 100%; padding: 12px 16px 40px; }
1182
- #legend.legend, #duration.legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1171
+ #legend.legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1172
+ .charts { grid-template-columns: 1fr; }
1173
+ .pie { width: 180px; margin: 0 auto; }
1183
1174
  #legend .count { border-right: 0; }
1184
1175
  .evidence { grid-template-columns: 1fr; }
1185
- .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; }
1186
1179
  }
1187
1180
 
1188
1181
  @media (prefers-reduced-motion: reduce) {
1189
1182
  .hero, .strip-window, .bands, .grain, .rail { animation: none; transition: none; }
1190
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
+ }