@cypress-design/vue-runresults 1.0.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.
@@ -0,0 +1,9 @@
1
+ The CJS build of Vite's Node API is deprecated. See https://vite.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
2
+ vite v5.4.19 building for production...
3
+ transforming...
4
+ ✓ 6 modules transformed.
5
+ rendering chunks...
6
+ computing gzip size...
7
+ dist/index.es.mjs 62.76 kB │ gzip: 15.72 kB │ map: 126.15 kB
8
+ dist/index.umd.js 46.15 kB │ gzip: 13.15 kB │ map: 118.97 kB
9
+ ✓ built in 1.78s
package/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # @cypress-design/vue-runresults
2
+
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#676](https://github.com/cypress-io/cypress-design/pull/676) [`1531f94`](https://github.com/cypress-io/cypress-design/commit/1531f9439d73493e3eb08c72f41c0e7f0db958de) Thanks [@emilmilanov](https://github.com/emilmilanov)! - Add RunResults component — a pill of test-result counts (passed / failed / skipped / pending) with optional `flaky` and `self-healed` leading stats separated by a vertical divider. Each stat is an icon + count, optionally wrapped in a link (`links` prop or a custom `renderLink` callback) and an optional tooltip. Supports `light` and `dark` themes and an `expanded` mode that shows zero-count regular stats. Available for React and Vue with shared constants. See `components/RunResults/instructions.md` for the full props API.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`1531f94`](https://github.com/cypress-io/cypress-design/commit/1531f9439d73493e3eb08c72f41c0e7f0db958de)]:
12
+ - @cypress-design/constants-runresults@1.0.0
package/RunResults.vue ADDED
@@ -0,0 +1,318 @@
1
+ <script lang="ts">
2
+ import { defineComponent, h, type PropType, type VNode } from 'vue'
3
+ import { StatusIcon } from '@cypress-design/vue-statusicon'
4
+ import {
5
+ IconStatusFlaky,
6
+ IconGeneralSparkleSingleSmall,
7
+ } from '@cypress-design/vue-icon'
8
+ import Tooltip from '@cypress-design/vue-tooltip'
9
+
10
+ // RunResults-only tooltip overrides.
11
+ //
12
+ // The shared Tooltip hardcodes 16px / 24px / 160px-min on its inner text
13
+ // container and gray-900 / white text color on the colored wrapper. The
14
+ // popper slot only lets us inject content *inside* the inner container, so
15
+ // font and color could be set via a child wrapper, but min-width on a
16
+ // parent cannot be overridden from a child.
17
+ //
18
+ // We tag the popper slot content with a marker class
19
+ // (`cy-runresults-tooltip-${color}` — e.g. `cy-runresults-tooltip-dark` or
20
+ // `cy-runresults-tooltip-light` — applied in the popper slot below) and use
21
+ // `:has()` to target the tooltip ancestors only when our marker is present.
22
+ // The CSS lives here as a JS-injected <style> tag so consumers of
23
+ // @cypress-design/vue-runresults get the overrides without needing to import
24
+ // a separate CSS file. SFC <style> blocks would emit a separate
25
+ // dist/style.css that the JS bundle doesn't reference under Vite library
26
+ // mode — so we inject at runtime.
27
+ //
28
+ // Color values are hard-coded so the rules work outside the docs site,
29
+ // where the --cy-* CSS custom properties may not be loaded:
30
+ // gray-300 (#bfc2d4) for dark tooltips (on light RunResults)
31
+ // gray-700 (#5a5f7a) for light tooltips (on dark RunResults)
32
+ const RUN_RESULTS_TOOLTIP_STYLE_ID = 'cy-runresults-tooltip-style'
33
+ if (typeof document !== 'undefined') {
34
+ if (!document.getElementById(RUN_RESULTS_TOOLTIP_STYLE_ID)) {
35
+ const style = document.createElement('style')
36
+ style.id = RUN_RESULTS_TOOLTIP_STYLE_ID
37
+ // gray-300 (#BFC2D4) for dark tooltips (on light RunResults)
38
+ // gray-700 (#5A5F7A) for light tooltips (on dark RunResults)
39
+ const sizeRules =
40
+ ' font-size: 14px; line-height: 20px; min-width: 0; white-space: nowrap; '
41
+ style.textContent =
42
+ "[role='tooltip']:has(.cy-runresults-tooltip-dark) > div { color: #bfc2d4; }" +
43
+ "[role='tooltip']:has(.cy-runresults-tooltip-dark) > div > div:last-child {" +
44
+ sizeRules +
45
+ '}' +
46
+ "[role='tooltip']:has(.cy-runresults-tooltip-light) > div { color: #5a5f7a; }" +
47
+ "[role='tooltip']:has(.cy-runresults-tooltip-light) > div > div:last-child {" +
48
+ sizeRules +
49
+ '}'
50
+ document.head.appendChild(style)
51
+ }
52
+ }
53
+ import {
54
+ CssClasses,
55
+ CssTheme,
56
+ TooltipColorForTheme,
57
+ type RunResultsProps,
58
+ type RunResultsTheme,
59
+ type StatKey,
60
+ getSeparatorAfterKey,
61
+ getTooltipLabel,
62
+ getTooltipPlacement,
63
+ getFlakyTooltipText,
64
+ hasAnyStat,
65
+ showRegularStat,
66
+ statKeyToKebab,
67
+ statValue,
68
+ } from '@cypress-design/constants-runresults'
69
+
70
+ // Rendered via a render function rather than <template> because the
71
+ // `renderLink` callback prop returns a VNode — template ergonomics don't
72
+ // compose cleanly around a caller-provided VNode.
73
+ export default defineComponent({
74
+ name: 'RunResults',
75
+ inheritAttrs: false,
76
+ props: {
77
+ // Number-or-null props use the [Number, null] array form so Vue's
78
+ // runtime validator accepts `null` without emitting a dev-mode type
79
+ // warning. The bare `Number` constructor only matches numbers; the
80
+ // PropType cast is TypeScript-only.
81
+ passed: { type: [Number, null] as PropType<number | null>, required: true },
82
+ failed: { type: [Number, null] as PropType<number | null>, required: true },
83
+ skipped: {
84
+ type: [Number, null] as PropType<number | null>,
85
+ required: true,
86
+ },
87
+ pending: {
88
+ type: [Number, null] as PropType<number | null>,
89
+ required: true,
90
+ },
91
+ flaky: { type: [Number, null] as PropType<number | null>, default: null },
92
+ selfHealed: {
93
+ type: [Number, null] as PropType<number | null>,
94
+ default: null,
95
+ },
96
+ showSelfHealed: { type: Boolean, default: false },
97
+ theme: { type: String as PropType<RunResultsTheme>, default: 'light' },
98
+ expanded: { type: Boolean, default: false },
99
+ links: {
100
+ type: Object as PropType<RunResultsProps['links']>,
101
+ default: () => ({}),
102
+ },
103
+ renderLink: {
104
+ type: Function as PropType<RunResultsProps['renderLink']>,
105
+ default: null,
106
+ },
107
+ showTooltip: { type: Boolean, default: true },
108
+ className: { type: String, default: undefined },
109
+ },
110
+ setup(props, { attrs }) {
111
+ function joinClasses(...parts: (string | false | undefined)[]): string {
112
+ return parts.filter(Boolean).join(' ')
113
+ }
114
+
115
+ function renderIcon(statKey: StatKey): VNode {
116
+ const kebab = statKeyToKebab(statKey)
117
+ if (statKey === 'flaky') {
118
+ return h(IconStatusFlaky, {
119
+ size: '12',
120
+ 'data-cy': 'status-icon-flaky',
121
+ class: CssClasses.iconFlaky,
122
+ })
123
+ }
124
+ if (statKey === 'selfHealed') {
125
+ return h(IconGeneralSparkleSingleSmall, {
126
+ strokeColor: 'jade-400',
127
+ fillColor: 'jade-50',
128
+ 'data-cy': 'status-icon-self-healed',
129
+ class: CssClasses.iconSelfHealed,
130
+ })
131
+ }
132
+ return h(StatusIcon, {
133
+ size: '12',
134
+ status: statKey,
135
+ 'data-cy': `status-icon-${kebab}`,
136
+ class: CssClasses.icon,
137
+ })
138
+ }
139
+
140
+ function renderStat(
141
+ statKey: StatKey,
142
+ count: number,
143
+ link: string | undefined,
144
+ applySeparator: boolean,
145
+ ): VNode {
146
+ const kebab = statKeyToKebab(statKey)
147
+ const isLinked = !!link
148
+ const label = getTooltipLabel(statKey, count, isLinked)
149
+ const inner: VNode[] = [renderIcon(statKey), h('span', String(count))]
150
+
151
+ let content: VNode
152
+ if (link) {
153
+ if (props.renderLink) {
154
+ content = props.renderLink(link, inner) as VNode
155
+ } else {
156
+ content = h(
157
+ 'a',
158
+ {
159
+ href: link,
160
+ 'aria-label': label,
161
+ 'data-cy': `link-${kebab}`,
162
+ class: joinClasses(CssClasses.link, CssTheme[props.theme].link),
163
+ },
164
+ inner,
165
+ )
166
+ }
167
+ } else {
168
+ content = h('span', { class: CssClasses.unlinked }, inner)
169
+ }
170
+
171
+ if (props.showTooltip) {
172
+ const tooltipText =
173
+ statKey === 'flaky' ? getFlakyTooltipText(count) : label
174
+ const tooltipTarget = content
175
+ content = h(
176
+ Tooltip,
177
+ {
178
+ placement: getTooltipPlacement(statKey),
179
+ color: TooltipColorForTheme[props.theme],
180
+ },
181
+ {
182
+ default: () => tooltipTarget,
183
+ // Marker class — picked up by the injected <style> above to apply
184
+ // RunResults-only tooltip overrides per tooltip color variant.
185
+ popper: () =>
186
+ h(
187
+ 'span',
188
+ {
189
+ class: `cy-runresults-tooltip-${TooltipColorForTheme[props.theme]}`,
190
+ },
191
+ tooltipText,
192
+ ),
193
+ },
194
+ )
195
+ }
196
+
197
+ return h(
198
+ 'li',
199
+ {
200
+ 'data-cy': `total-${kebab}`,
201
+ class: joinClasses(
202
+ CssClasses.item,
203
+ applySeparator && CssClasses.separatorAfter,
204
+ applySeparator && CssTheme[props.theme].separator,
205
+ ),
206
+ },
207
+ [content],
208
+ )
209
+ }
210
+
211
+ return () => {
212
+ const summaryProps = {
213
+ passed: props.passed,
214
+ failed: props.failed,
215
+ skipped: props.skipped,
216
+ pending: props.pending,
217
+ flaky: props.flaky,
218
+ selfHealed: props.selfHealed,
219
+ showSelfHealed: props.showSelfHealed,
220
+ expanded: props.expanded,
221
+ }
222
+
223
+ if (!hasAnyStat(summaryProps)) return null
224
+
225
+ const separatorAfterKey = getSeparatorAfterKey(summaryProps)
226
+ const showFlaky = statValue(props.flaky) > 0
227
+ // Self-healed renders whenever the flag is true; the count (0 included)
228
+ // is shown verbatim. See instructions.md / architecture.md for rationale.
229
+ const showSelfHealedStat = !!props.showSelfHealed
230
+
231
+ const items: VNode[] = []
232
+ if (showFlaky) {
233
+ items.push(
234
+ renderStat(
235
+ 'flaky',
236
+ statValue(props.flaky),
237
+ props.links?.flaky,
238
+ separatorAfterKey === 'flaky',
239
+ ),
240
+ )
241
+ }
242
+ if (showSelfHealedStat) {
243
+ items.push(
244
+ renderStat(
245
+ 'selfHealed',
246
+ statValue(props.selfHealed),
247
+ props.links?.selfHealed,
248
+ separatorAfterKey === 'selfHealed',
249
+ ),
250
+ )
251
+ }
252
+ if (showRegularStat(props.skipped, props.expanded)) {
253
+ items.push(
254
+ renderStat(
255
+ 'skipped',
256
+ statValue(props.skipped),
257
+ props.links?.skipped,
258
+ false,
259
+ ),
260
+ )
261
+ }
262
+ if (showRegularStat(props.pending, props.expanded)) {
263
+ items.push(
264
+ renderStat(
265
+ 'pending',
266
+ statValue(props.pending),
267
+ props.links?.pending,
268
+ false,
269
+ ),
270
+ )
271
+ }
272
+ if (showRegularStat(props.passed, props.expanded)) {
273
+ items.push(
274
+ renderStat(
275
+ 'passed',
276
+ statValue(props.passed),
277
+ props.links?.passed,
278
+ false,
279
+ ),
280
+ )
281
+ }
282
+ if (showRegularStat(props.failed, props.expanded)) {
283
+ items.push(
284
+ renderStat(
285
+ 'failed',
286
+ statValue(props.failed),
287
+ props.links?.failed,
288
+ false,
289
+ ),
290
+ )
291
+ }
292
+
293
+ return h(
294
+ 'div',
295
+ {
296
+ ...attrs,
297
+ 'data-cy': 'run-results',
298
+ // Pass an array directly so Vue's runtime normalizes fallthrough
299
+ // `attrs.class` whether it arrives as a string, array, or object
300
+ // (e.g. parent uses `:class="['a','b']"` or `:class="{ a: true }"`).
301
+ // joinClasses(...) would stringify an array via `.join(' ')` on a
302
+ // single truthy element → invalid `"a,b"` token.
303
+ class: [CssClasses.container, props.className, attrs.class],
304
+ },
305
+ [
306
+ h(
307
+ 'ul',
308
+ {
309
+ class: joinClasses(CssClasses.list, CssTheme[props.theme].list),
310
+ },
311
+ items,
312
+ ),
313
+ ],
314
+ )
315
+ }
316
+ },
317
+ })
318
+ </script>
@@ -0,0 +1,29 @@
1
+ /// <reference types="cypress" />
2
+ import { mount } from 'cypress/vue'
3
+ import RunResults from './RunResults.vue'
4
+ import a11yAssertions from '../a11y-assertions'
5
+ import type { RunResultsProps } from '@cypress-design/constants-runresults'
6
+
7
+ function mountStory(props: Partial<RunResultsProps> = {}) {
8
+ mount(() => (
9
+ <div class="p-8">
10
+ <RunResults
11
+ passed={props.passed ?? 0}
12
+ failed={props.failed ?? 0}
13
+ skipped={props.skipped ?? 0}
14
+ pending={props.pending ?? 0}
15
+ flaky={props.flaky}
16
+ selfHealed={props.selfHealed}
17
+ showSelfHealed={props.showSelfHealed}
18
+ theme={props.theme}
19
+ expanded={props.expanded}
20
+ links={props.links}
21
+ showTooltip={false}
22
+ />
23
+ </div>
24
+ ))
25
+ }
26
+
27
+ describe('<RunResults /> Vue — Accessibility', () => {
28
+ a11yAssertions(mountStory, 'vue')
29
+ })
@@ -0,0 +1,44 @@
1
+ /// <reference types="cypress" />
2
+ import { mount } from 'cypress/vue'
3
+ import RunResults from './RunResults.vue'
4
+ import assertions from '../assertions'
5
+ import type { RunResultsProps } from '@cypress-design/constants-runresults'
6
+
7
+ function mountStory(props: Partial<RunResultsProps> = {}) {
8
+ mount(() => (
9
+ <div class="p-8">
10
+ <RunResults
11
+ passed={props.passed ?? 0}
12
+ failed={props.failed ?? 0}
13
+ skipped={props.skipped ?? 0}
14
+ pending={props.pending ?? 0}
15
+ flaky={props.flaky}
16
+ selfHealed={props.selfHealed}
17
+ showSelfHealed={props.showSelfHealed}
18
+ theme={props.theme}
19
+ expanded={props.expanded}
20
+ links={props.links}
21
+ renderLink={props.renderLink}
22
+ showTooltip={props.showTooltip}
23
+ />
24
+ </div>
25
+ ))
26
+ }
27
+
28
+ describe('<RunResults /> Vue', () => {
29
+ assertions(mountStory, 'vue')
30
+
31
+ it('renders a custom link via renderLink', () => {
32
+ mountStory({
33
+ passed: 22,
34
+ failed: 0,
35
+ skipped: 0,
36
+ pending: 0,
37
+ links: { passed: '#passed' },
38
+ renderLink: (href, children) => (
39
+ <button data-href={href}>{children}</button>
40
+ ),
41
+ })
42
+ cy.get('button[data-href="#passed"]').should('exist')
43
+ })
44
+ })
@@ -0,0 +1,124 @@
1
+ import { type PropType, type VNode } from 'vue';
2
+ import { type StatKey } from '@cypress-design/constants-runresults';
3
+ declare const _default: import("vue").DefineComponent<{
4
+ passed: {
5
+ type: PropType<number | null>;
6
+ required: true;
7
+ };
8
+ failed: {
9
+ type: PropType<number | null>;
10
+ required: true;
11
+ };
12
+ skipped: {
13
+ type: PropType<number | null>;
14
+ required: true;
15
+ };
16
+ pending: {
17
+ type: PropType<number | null>;
18
+ required: true;
19
+ };
20
+ flaky: {
21
+ type: PropType<number | null>;
22
+ default: null;
23
+ };
24
+ selfHealed: {
25
+ type: PropType<number | null>;
26
+ default: null;
27
+ };
28
+ showSelfHealed: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ theme: {
33
+ type: PropType<"light" | "dark">;
34
+ default: string;
35
+ };
36
+ expanded: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ links: {
41
+ type: PropType<Partial<Record<StatKey, string>> | undefined>;
42
+ default: () => {};
43
+ };
44
+ renderLink: {
45
+ type: PropType<((href: string, children: unknown) => unknown) | undefined>;
46
+ default: null;
47
+ };
48
+ showTooltip: {
49
+ type: BooleanConstructor;
50
+ default: boolean;
51
+ };
52
+ className: {
53
+ type: StringConstructor;
54
+ default: undefined;
55
+ };
56
+ }, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
57
+ [key: string]: any;
58
+ }> | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
59
+ passed: {
60
+ type: PropType<number | null>;
61
+ required: true;
62
+ };
63
+ failed: {
64
+ type: PropType<number | null>;
65
+ required: true;
66
+ };
67
+ skipped: {
68
+ type: PropType<number | null>;
69
+ required: true;
70
+ };
71
+ pending: {
72
+ type: PropType<number | null>;
73
+ required: true;
74
+ };
75
+ flaky: {
76
+ type: PropType<number | null>;
77
+ default: null;
78
+ };
79
+ selfHealed: {
80
+ type: PropType<number | null>;
81
+ default: null;
82
+ };
83
+ showSelfHealed: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
87
+ theme: {
88
+ type: PropType<"light" | "dark">;
89
+ default: string;
90
+ };
91
+ expanded: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
95
+ links: {
96
+ type: PropType<Partial<Record<StatKey, string>> | undefined>;
97
+ default: () => {};
98
+ };
99
+ renderLink: {
100
+ type: PropType<((href: string, children: unknown) => unknown) | undefined>;
101
+ default: null;
102
+ };
103
+ showTooltip: {
104
+ type: BooleanConstructor;
105
+ default: boolean;
106
+ };
107
+ className: {
108
+ type: StringConstructor;
109
+ default: undefined;
110
+ };
111
+ }>>, {
112
+ links: Partial<Record<StatKey, string>> | undefined;
113
+ flaky: number | null;
114
+ selfHealed: number | null;
115
+ renderLink: ((href: string, children: unknown) => unknown) | undefined;
116
+ showSelfHealed: boolean;
117
+ theme: "light" | "dark";
118
+ expanded: boolean;
119
+ showTooltip: boolean;
120
+ className: string;
121
+ }, {}>;
122
+ export default _default;
123
+
124
+ //# sourceMappingURL=RunResults.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunResults.vue.d.ts","sourceRoot":"","sources":["../RunResults.vue"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default } from './RunResults.vue';
2
+ export type { RunResultsProps, StatKey, RunResultsTheme, } from '@cypress-design/constants-runresults';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,YAAY,EACV,eAAe,EACf,OAAO,EACP,eAAe,GAChB,MAAM,sCAAsC,CAAA"}