@opensip-cli/dashboard 0.1.11 → 0.1.13
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/README.md +3 -3
- package/dist/client-bundle.generated.d.ts.map +1 -1
- package/dist/client-bundle.generated.js +1 -1
- package/dist/client-bundle.generated.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +4 -3
- package/dist/generator.js.map +1 -1
- package/dist/report-cup-icon.d.ts +17 -0
- package/dist/report-cup-icon.d.ts.map +1 -0
- package/dist/report-cup-icon.js +34 -0
- package/dist/report-cup-icon.js.map +1 -0
- package/package.json +3 -3
- package/dist/__tests__/catalog-provenance.test.d.ts +0 -11
- package/dist/__tests__/catalog-provenance.test.d.ts.map +0 -1
- package/dist/__tests__/catalog-provenance.test.js +0 -112
- package/dist/__tests__/catalog-provenance.test.js.map +0 -1
- package/dist/__tests__/coupling-attribution.test.d.ts +0 -9
- package/dist/__tests__/coupling-attribution.test.d.ts.map +0 -1
- package/dist/__tests__/coupling-attribution.test.js +0 -95
- package/dist/__tests__/coupling-attribution.test.js.map +0 -1
- package/dist/__tests__/dashboard-bundle-weight.test.d.ts +0 -23
- package/dist/__tests__/dashboard-bundle-weight.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-bundle-weight.test.js +0 -80
- package/dist/__tests__/dashboard-bundle-weight.test.js.map +0 -1
- package/dist/__tests__/dashboard-cell-containment.test.d.ts +0 -2
- package/dist/__tests__/dashboard-cell-containment.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-cell-containment.test.js +0 -52
- package/dist/__tests__/dashboard-cell-containment.test.js.map +0 -1
- package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts +0 -10
- package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-cytoscape-vendor.test.js +0 -40
- package/dist/__tests__/dashboard-cytoscape-vendor.test.js.map +0 -1
- package/dist/__tests__/dashboard-editor-link.test.d.ts +0 -14
- package/dist/__tests__/dashboard-editor-link.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-editor-link.test.js +0 -87
- package/dist/__tests__/dashboard-editor-link.test.js.map +0 -1
- package/dist/__tests__/dashboard-el.test.d.ts +0 -18
- package/dist/__tests__/dashboard-el.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-el.test.js +0 -90
- package/dist/__tests__/dashboard-el.test.js.map +0 -1
- package/dist/__tests__/dashboard-filters.test.d.ts +0 -9
- package/dist/__tests__/dashboard-filters.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-filters.test.js +0 -87
- package/dist/__tests__/dashboard-filters.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-card-singleton.test.d.ts +0 -9
- package/dist/__tests__/dashboard-function-card-singleton.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-card-singleton.test.js +0 -75
- package/dist/__tests__/dashboard-function-card-singleton.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-card.test.d.ts +0 -10
- package/dist/__tests__/dashboard-function-card.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-card.test.js +0 -439
- package/dist/__tests__/dashboard-function-card.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-row.test.d.ts +0 -11
- package/dist/__tests__/dashboard-function-row.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-row.test.js +0 -102
- package/dist/__tests__/dashboard-function-row.test.js.map +0 -1
- package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts +0 -9
- package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-generator-graph-catalog.test.js +0 -77
- package/dist/__tests__/dashboard-generator-graph-catalog.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts +0 -13
- package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-offline.integration.test.js +0 -57
- package/dist/__tests__/dashboard-graph-offline.integration.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-scc.test.d.ts +0 -17
- package/dist/__tests__/dashboard-graph-scc.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-scc.test.js +0 -89
- package/dist/__tests__/dashboard-graph-scc.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-view-model.test.d.ts +0 -12
- package/dist/__tests__/dashboard-graph-view-model.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-view-model.test.js +0 -331
- package/dist/__tests__/dashboard-graph-view-model.test.js.map +0 -1
- package/dist/__tests__/dashboard-help-drawer.test.d.ts +0 -9
- package/dist/__tests__/dashboard-help-drawer.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-help-drawer.test.js +0 -95
- package/dist/__tests__/dashboard-help-drawer.test.js.map +0 -1
- package/dist/__tests__/dashboard-html.test.d.ts +0 -2
- package/dist/__tests__/dashboard-html.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-html.test.js +0 -169
- package/dist/__tests__/dashboard-html.test.js.map +0 -1
- package/dist/__tests__/dashboard-indexes.test.d.ts +0 -11
- package/dist/__tests__/dashboard-indexes.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-indexes.test.js +0 -214
- package/dist/__tests__/dashboard-indexes.test.js.map +0 -1
- package/dist/__tests__/dashboard-pagination.test.d.ts +0 -15
- package/dist/__tests__/dashboard-pagination.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-pagination.test.js +0 -140
- package/dist/__tests__/dashboard-pagination.test.js.map +0 -1
- package/dist/__tests__/dashboard-path-utils.test.d.ts +0 -13
- package/dist/__tests__/dashboard-path-utils.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-path-utils.test.js +0 -62
- package/dist/__tests__/dashboard-path-utils.test.js.map +0 -1
- package/dist/__tests__/dashboard-search.test.d.ts +0 -10
- package/dist/__tests__/dashboard-search.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-search.test.js +0 -52
- package/dist/__tests__/dashboard-search.test.js.map +0 -1
- package/dist/__tests__/dashboard-sessions.test.d.ts +0 -14
- package/dist/__tests__/dashboard-sessions.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-sessions.test.js +0 -400
- package/dist/__tests__/dashboard-sessions.test.js.map +0 -1
- package/dist/__tests__/dashboard-trace.test.d.ts +0 -16
- package/dist/__tests__/dashboard-trace.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-trace.test.js +0 -170
- package/dist/__tests__/dashboard-trace.test.js.map +0 -1
- package/dist/__tests__/dashboard-validation.integration.test.d.ts +0 -14
- package/dist/__tests__/dashboard-validation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-validation.integration.test.js +0 -221
- package/dist/__tests__/dashboard-validation.integration.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-conformance.test.d.ts +0 -12
- package/dist/__tests__/dashboard-view-conformance.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-conformance.test.js +0 -52
- package/dist/__tests__/dashboard-view-conformance.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-coupling.test.d.ts +0 -7
- package/dist/__tests__/dashboard-view-coupling.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-coupling.test.js +0 -360
- package/dist/__tests__/dashboard-view-coupling.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-distribution.test.d.ts +0 -10
- package/dist/__tests__/dashboard-view-distribution.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-distribution.test.js +0 -249
- package/dist/__tests__/dashboard-view-distribution.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-graph.test.d.ts +0 -13
- package/dist/__tests__/dashboard-view-graph.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-graph.test.js +0 -299
- package/dist/__tests__/dashboard-view-graph.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-template.test.d.ts +0 -20
- package/dist/__tests__/dashboard-view-template.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-template.test.js +0 -206
- package/dist/__tests__/dashboard-view-template.test.js.map +0 -1
- package/dist/__tests__/dashboard.test.d.ts +0 -2
- package/dist/__tests__/dashboard.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard.test.js +0 -129
- package/dist/__tests__/dashboard.test.js.map +0 -1
- package/dist/__tests__/graph-tab.test.d.ts +0 -10
- package/dist/__tests__/graph-tab.test.d.ts.map +0 -1
- package/dist/__tests__/graph-tab.test.js +0 -78
- package/dist/__tests__/graph-tab.test.js.map +0 -1
- package/dist/__tests__/yagni-tab.test.d.ts +0 -13
- package/dist/__tests__/yagni-tab.test.d.ts.map +0 -1
- package/dist/__tests__/yagni-tab.test.js +0 -85
- package/dist/__tests__/yagni-tab.test.js.map +0 -1
- package/dist/client/el.d.ts +0 -17
- package/dist/client/el.d.ts.map +0 -1
- package/dist/client/el.js +0 -36
- package/dist/client/el.js.map +0 -1
- package/dist/code-paths/__tests__/views-registry.test.d.ts +0 -18
- package/dist/code-paths/__tests__/views-registry.test.d.ts.map +0 -1
- package/dist/code-paths/__tests__/views-registry.test.js +0 -41
- package/dist/code-paths/__tests__/views-registry.test.js.map +0 -1
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
|
-
/**
|
|
3
|
-
* @vitest-environment jsdom
|
|
4
|
-
*
|
|
5
|
-
* Pagination interaction tests — proves the event-delegation rewrite preserves
|
|
6
|
-
* the click behaviour after the graph:cycle break.
|
|
7
|
-
*
|
|
8
|
-
* The page buttons are now PURE (each carries `data-page-target`; no per-button
|
|
9
|
-
* onclick closure); navigation flows through ONE delegated listener attached to
|
|
10
|
-
* the pagination container. These tests boot the client bundle and drive
|
|
11
|
-
* `paginateTable` (global) and `renderChecksCatalog` (global) by clicking real
|
|
12
|
-
* buttons, asserting the visible page changes — including the re-pagination case
|
|
13
|
-
* (the checks catalog re-paginates the SAME container as filters toggle).
|
|
14
|
-
*/
|
|
15
|
-
import { describe, expect, it, beforeEach } from 'vitest';
|
|
16
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
17
|
-
/** Build `n` catalog entries with sortable, search-matchable slugs. */
|
|
18
|
-
function buildCatalog(n) {
|
|
19
|
-
return Array.from({ length: n }, (_, i) => ({
|
|
20
|
-
slug: 'check-' + String(i).padStart(2, '0'),
|
|
21
|
-
name: 'Check ' + i,
|
|
22
|
-
source: 'universal',
|
|
23
|
-
confidence: 'high',
|
|
24
|
-
tags: ['quality'],
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
function bundleGlobals() {
|
|
28
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
|
|
29
|
-
return new Function('var sessions = [];\n' +
|
|
30
|
-
DASHBOARD_CLIENT_BUNDLE +
|
|
31
|
-
'\nreturn { paginateTable, renderChecksCatalog };')();
|
|
32
|
-
}
|
|
33
|
-
/** Build a tbody with `n` single-cell data rows whose text is the row index. */
|
|
34
|
-
function buildRows(n) {
|
|
35
|
-
const table = document.createElement('table');
|
|
36
|
-
const tbody = document.createElement('tbody');
|
|
37
|
-
for (let i = 0; i < n; i++) {
|
|
38
|
-
const tr = document.createElement('tr');
|
|
39
|
-
const td = document.createElement('td');
|
|
40
|
-
td.textContent = 'row-' + i;
|
|
41
|
-
tr.append(td);
|
|
42
|
-
tbody.append(tr);
|
|
43
|
-
}
|
|
44
|
-
table.append(tbody);
|
|
45
|
-
return { table, tbody };
|
|
46
|
-
}
|
|
47
|
-
/** The indices of currently-visible data rows (display !== 'none'). */
|
|
48
|
-
function visibleRowIndexes(tbody) {
|
|
49
|
-
const out = [];
|
|
50
|
-
[...tbody.children].forEach((row, i) => {
|
|
51
|
-
if (row.style.display !== 'none')
|
|
52
|
-
out.push(i);
|
|
53
|
-
});
|
|
54
|
-
return out;
|
|
55
|
-
}
|
|
56
|
-
function clickButtonWithText(pag, text) {
|
|
57
|
-
const btn = [...pag.querySelectorAll('.pagination-btn')].find((b) => b.textContent === text);
|
|
58
|
-
if (!btn)
|
|
59
|
-
throw new Error('no pagination button with text ' + JSON.stringify(text));
|
|
60
|
-
btn.dispatchEvent(new MouseEvent('click', { bubbles: true }));
|
|
61
|
-
}
|
|
62
|
-
beforeEach(() => {
|
|
63
|
-
document.body.innerHTML = '';
|
|
64
|
-
});
|
|
65
|
-
describe('paginateTable interaction', () => {
|
|
66
|
-
it('shows the first 10 of 25 rows initially with page buttons', () => {
|
|
67
|
-
const { paginateTable } = bundleGlobals();
|
|
68
|
-
const { tbody } = buildRows(25);
|
|
69
|
-
const pag = document.createElement('div');
|
|
70
|
-
paginateTable(tbody, pag, 10);
|
|
71
|
-
expect(visibleRowIndexes(tbody)).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
72
|
-
expect(pag.querySelectorAll('.pagination-btn').length).toBeGreaterThan(0);
|
|
73
|
-
});
|
|
74
|
-
it('clicking Next advances to the second page', () => {
|
|
75
|
-
const { paginateTable } = bundleGlobals();
|
|
76
|
-
const { tbody } = buildRows(25);
|
|
77
|
-
const pag = document.createElement('div');
|
|
78
|
-
paginateTable(tbody, pag, 10);
|
|
79
|
-
clickButtonWithText(pag, 'Next →');
|
|
80
|
-
expect(visibleRowIndexes(tbody)).toEqual([10, 11, 12, 13, 14, 15, 16, 17, 18, 19]);
|
|
81
|
-
});
|
|
82
|
-
it('clicking a numbered button jumps to that page', () => {
|
|
83
|
-
const { paginateTable } = bundleGlobals();
|
|
84
|
-
const { tbody } = buildRows(25);
|
|
85
|
-
const pag = document.createElement('div');
|
|
86
|
-
paginateTable(tbody, pag, 10);
|
|
87
|
-
clickButtonWithText(pag, '3'); // page index 2 → rows 20..24
|
|
88
|
-
expect(visibleRowIndexes(tbody)).toEqual([20, 21, 22, 23, 24]);
|
|
89
|
-
});
|
|
90
|
-
it('clicking Next then Prev returns to the first page', () => {
|
|
91
|
-
const { paginateTable } = bundleGlobals();
|
|
92
|
-
const { tbody } = buildRows(25);
|
|
93
|
-
const pag = document.createElement('div');
|
|
94
|
-
paginateTable(tbody, pag, 10);
|
|
95
|
-
clickButtonWithText(pag, 'Next →');
|
|
96
|
-
clickButtonWithText(pag, '← Prev');
|
|
97
|
-
expect(visibleRowIndexes(tbody)).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
98
|
-
});
|
|
99
|
-
it('disabled Prev on the first page is a no-op', () => {
|
|
100
|
-
const { paginateTable } = bundleGlobals();
|
|
101
|
-
const { tbody } = buildRows(25);
|
|
102
|
-
const pag = document.createElement('div');
|
|
103
|
-
paginateTable(tbody, pag, 10);
|
|
104
|
-
clickButtonWithText(pag, '← Prev'); // disabled on page 0
|
|
105
|
-
expect(visibleRowIndexes(tbody)).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe('checks catalog re-pagination (delegated listener survives data swap)', () => {
|
|
109
|
-
it('paginates, then re-paginates the filtered subset on the SAME container, and clicks still work', () => {
|
|
110
|
-
const { renderChecksCatalog } = bundleGlobals();
|
|
111
|
-
const panel = document.createElement('div');
|
|
112
|
-
document.body.append(panel);
|
|
113
|
-
renderChecksCatalog(panel, buildCatalog(25));
|
|
114
|
-
const pag = panel.querySelector('.pagination');
|
|
115
|
-
expect(pag).not.toBeNull();
|
|
116
|
-
// Second page navigation works on the initial (grouped) paginator.
|
|
117
|
-
clickButtonWithText(pag, 'Next →');
|
|
118
|
-
let visibleSlugs = [...panel.querySelectorAll('tbody tr')]
|
|
119
|
-
.filter((r) => r.style.display !== 'none' && r.dataset.slug)
|
|
120
|
-
.map((r) => r.dataset.slug);
|
|
121
|
-
expect(visibleSlugs).toContain('check-10');
|
|
122
|
-
expect(visibleSlugs).not.toContain('check-00');
|
|
123
|
-
// Type a filter that matches a subset spanning >1 page → triggers
|
|
124
|
-
// paginateFilteredGroups on the SAME `pag` container (re-wire path).
|
|
125
|
-
const search = panel.querySelector('input.search-input');
|
|
126
|
-
search.value = 'check-';
|
|
127
|
-
search.dispatchEvent(new Event('input', { bubbles: true }));
|
|
128
|
-
// The (re-wired) delegated listener must still drive the FILTERED paginator:
|
|
129
|
-
// page 1 of the filtered set, then Next → filtered page 2.
|
|
130
|
-
const pag2 = panel.querySelector('.pagination');
|
|
131
|
-
clickButtonWithText(pag2, 'Next →');
|
|
132
|
-
visibleSlugs = [...panel.querySelectorAll('tbody tr')]
|
|
133
|
-
.filter((r) => r.style.display !== 'none' && r.dataset.slug)
|
|
134
|
-
.map((r) => r.dataset.slug);
|
|
135
|
-
// Filtered page 2 shows the second window of matches (not the first 10).
|
|
136
|
-
expect(visibleSlugs).toContain('check-10');
|
|
137
|
-
expect(visibleSlugs).not.toContain('check-00');
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
//# sourceMappingURL=dashboard-pagination.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-pagination.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-pagination.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @vitest-environment jsdom
|
|
3
|
-
*
|
|
4
|
-
* Path-utils — `packageOfPath(filePath)` and `displayName(simpleName)`
|
|
5
|
-
* smoke tests (§11.2).
|
|
6
|
-
*
|
|
7
|
-
* `packageOfPath` / `displayName` now live in the typed client bundle (L4) and
|
|
8
|
-
* are exposed as page globals; the test loads the bundle and reads them off the
|
|
9
|
-
* eval scope. `var sessions = []` satisfies checks.ts's load-time
|
|
10
|
-
* `computeCheckStats()` read.
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=dashboard-path-utils.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-path-utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-path-utils.test.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
|
-
/**
|
|
3
|
-
* @vitest-environment jsdom
|
|
4
|
-
*
|
|
5
|
-
* Path-utils — `packageOfPath(filePath)` and `displayName(simpleName)`
|
|
6
|
-
* smoke tests (§11.2).
|
|
7
|
-
*
|
|
8
|
-
* `packageOfPath` / `displayName` now live in the typed client bundle (L4) and
|
|
9
|
-
* are exposed as page globals; the test loads the bundle and reads them off the
|
|
10
|
-
* eval scope. `var sessions = []` satisfies checks.ts's load-time
|
|
11
|
-
* `computeCheckStats()` read.
|
|
12
|
-
*/
|
|
13
|
-
import { describe, expect, it } from 'vitest';
|
|
14
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
15
|
-
function loadHelpers() {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
|
|
17
|
-
return new Function('var sessions = [];\n' + DASHBOARD_CLIENT_BUNDLE + '\nreturn { packageOfPath, displayName };')();
|
|
18
|
-
}
|
|
19
|
-
describe('packageOfPath', () => {
|
|
20
|
-
it('extracts the package directory from a packages/<name>/... path', () => {
|
|
21
|
-
const { packageOfPath } = loadHelpers();
|
|
22
|
-
expect(packageOfPath('packages/contracts/src/index.ts')).toBe('contracts');
|
|
23
|
-
});
|
|
24
|
-
it('handles nested workspaces under packages/<scope>/<name>/ ...', () => {
|
|
25
|
-
const { packageOfPath } = loadHelpers();
|
|
26
|
-
// The current heuristic returns the first segment under packages/, which
|
|
27
|
-
// for "packages/fitness/engine/src/cli/dashboard.ts" is "fitness". This
|
|
28
|
-
// mirrors the design's "package = workspace folder name" interpretation.
|
|
29
|
-
expect(packageOfPath('packages/fitness/engine/src/cli/dashboard.ts')).toBe('fitness');
|
|
30
|
-
});
|
|
31
|
-
it('returns <unknown> for non-package paths', () => {
|
|
32
|
-
const { packageOfPath } = loadHelpers();
|
|
33
|
-
expect(packageOfPath('not-a-package/foo.ts')).toBe('<unknown>');
|
|
34
|
-
});
|
|
35
|
-
it('returns <unknown> for empty input', () => {
|
|
36
|
-
const { packageOfPath } = loadHelpers();
|
|
37
|
-
expect(packageOfPath('')).toBe('<unknown>');
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
describe('displayName', () => {
|
|
41
|
-
it('passes real identifiers through unchanged', () => {
|
|
42
|
-
const { displayName } = loadHelpers();
|
|
43
|
-
expect(displayName('saveBaseline')).toBe('saveBaseline');
|
|
44
|
-
expect(displayName('renderHotView')).toBe('renderHotView');
|
|
45
|
-
});
|
|
46
|
-
it('collapses synthetic arrow names to <arrow>', () => {
|
|
47
|
-
const { displayName } = loadHelpers();
|
|
48
|
-
expect(displayName('<arrow:packages/fitness/checks-universal/src/checks/resilience/transaction-patterns.ts:234:45>')).toBe('<arrow>');
|
|
49
|
-
expect(displayName('<arrow:src/foo.ts:1:1>')).toBe('<arrow>');
|
|
50
|
-
});
|
|
51
|
-
it('collapses other synthetic shapes', () => {
|
|
52
|
-
const { displayName } = loadHelpers();
|
|
53
|
-
expect(displayName('<fn-expr:src/foo.ts:42:7>')).toBe('<fn-expr>');
|
|
54
|
-
expect(displayName('<module-init:src/foo.ts>')).toBe('<module-init>');
|
|
55
|
-
expect(displayName('<default>')).toBe('<default>');
|
|
56
|
-
});
|
|
57
|
-
it('returns empty string for non-string input', () => {
|
|
58
|
-
const { displayName } = loadHelpers();
|
|
59
|
-
expect(displayName(undefined)).toBe('');
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
//# sourceMappingURL=dashboard-path-utils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-path-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-path-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @vitest-environment jsdom
|
|
3
|
-
*
|
|
4
|
-
* Fuzzy search algorithm — substring-with-character-skip with scoring.
|
|
5
|
-
*
|
|
6
|
-
* `fuzzyMatch` now lives in the typed client bundle (L4) and is exposed as a
|
|
7
|
-
* page global; the test loads the bundle and reads it off the eval scope.
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=dashboard-search.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-search.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-search.test.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
|
-
/**
|
|
3
|
-
* @vitest-environment jsdom
|
|
4
|
-
*
|
|
5
|
-
* Fuzzy search algorithm — substring-with-character-skip with scoring.
|
|
6
|
-
*
|
|
7
|
-
* `fuzzyMatch` now lives in the typed client bundle (L4) and is exposed as a
|
|
8
|
-
* page global; the test loads the bundle and reads it off the eval scope.
|
|
9
|
-
*/
|
|
10
|
-
import { describe, expect, it } from 'vitest';
|
|
11
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
12
|
-
function loadFuzzyMatch() {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
|
|
14
|
-
const fn = new Function('var sessions = [];\n' + DASHBOARD_CLIENT_BUNDLE + '\nreturn fuzzyMatch;')();
|
|
15
|
-
return fn;
|
|
16
|
-
}
|
|
17
|
-
describe('fuzzyMatch', () => {
|
|
18
|
-
it('matches a prefix with a high score', () => {
|
|
19
|
-
const fn = loadFuzzyMatch();
|
|
20
|
-
const out = fn('log', ['logger', 'formatLog', 'unrelated']);
|
|
21
|
-
const top = out[0];
|
|
22
|
-
expect(top.name).toBe('logger');
|
|
23
|
-
// The prefix bonus (50) makes it dominant.
|
|
24
|
-
expect(top.score).toBeGreaterThan(out[1].score);
|
|
25
|
-
});
|
|
26
|
-
it('matches mid-word when the chars appear in order', () => {
|
|
27
|
-
const fn = loadFuzzyMatch();
|
|
28
|
-
const out = fn('ger', ['logger', 'unrelated']);
|
|
29
|
-
expect(out.map((m) => m.name)).toContain('logger');
|
|
30
|
-
});
|
|
31
|
-
it('returns empty for queries with no characters in order', () => {
|
|
32
|
-
const fn = loadFuzzyMatch();
|
|
33
|
-
const out = fn('xyz', ['logger', 'helper', 'format']);
|
|
34
|
-
expect(out).toEqual([]);
|
|
35
|
-
});
|
|
36
|
-
it('is case-insensitive but rewards exact case', () => {
|
|
37
|
-
const fn = loadFuzzyMatch();
|
|
38
|
-
const a = fn('Log', ['Logger', 'logger']);
|
|
39
|
-
expect(a[0].name).toBe('Logger');
|
|
40
|
-
expect(a[0].score).toBeGreaterThan(a[1].score);
|
|
41
|
-
});
|
|
42
|
-
it('returns empty for an empty query', () => {
|
|
43
|
-
const fn = loadFuzzyMatch();
|
|
44
|
-
expect(fn('', ['logger'])).toEqual([]);
|
|
45
|
-
});
|
|
46
|
-
it('matches non-contiguous chars (lgr → logger)', () => {
|
|
47
|
-
const fn = loadFuzzyMatch();
|
|
48
|
-
const out = fn('lgr', ['logger', 'unrelated']);
|
|
49
|
-
expect(out.map((m) => m.name)).toContain('logger');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=dashboard-search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-search.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-search.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @vitest-environment jsdom
|
|
3
|
-
*
|
|
4
|
-
* Shared session table + session-detail renderer tests
|
|
5
|
-
* (`dashboardSessionsJs`). Covers the three payload states the renderer
|
|
6
|
-
* must distinguish:
|
|
7
|
-
* 1. fitness payload → per-check detail, "Check" column.
|
|
8
|
-
* 2. graph payload → per-rule detail, "Rule" column (same structural
|
|
9
|
-
* shape, tool-specific label).
|
|
10
|
-
* 3. no payload → explicit "No detail recorded" instead of a
|
|
11
|
-
* silent empty table (covers pre-payload-split sessions).
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=dashboard-sessions.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-sessions.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-sessions.test.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG"}
|