Skip to content

Commit dc6a11c

Browse files
committed
feat(utils): remove @poppinss/cliui dependency
1 parent 3b3501e commit dc6a11c

File tree

16 files changed

+46
-813
lines changed

16 files changed

+46
-813
lines changed

package-lock.json

Lines changed: 2 additions & 319 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"@axe-core/playwright": "^4.11.0",
2323
"@code-pushup/portal-client": "^0.16.0",
2424
"@nx/devkit": "21.4.1",
25-
"@poppinss/cliui": "6.4.1",
2625
"@swc/helpers": "0.5.13",
2726
"ansis": "^3.3.2",
2827
"build-md": "^0.4.2",

packages/plugin-lighthouse/src/lib/runner/details/item-value.unit.test.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import ansis from 'ansis';
22
import type Details from 'lighthouse/types/lhr/audit-details';
3-
import { beforeAll, describe, expect, it } from 'vitest';
4-
import { logger, ui } from '@code-pushup/utils';
3+
import { describe, expect, it } from 'vitest';
4+
import { logger } from '@code-pushup/utils';
55
import {
66
type SimpleItemValue,
77
formatTableItemPropertyValue,
@@ -49,10 +49,6 @@ describe('parseSimpleItemValue', () => {
4949
});
5050

5151
describe('parseTableItemPropertyValue', () => {
52-
beforeAll(() => {
53-
ui().switchMode('raw');
54-
});
55-
5652
it('should parse undefined', () => {
5753
expect(parseTableItemPropertyValue(undefined)).toBe('');
5854
});
@@ -184,10 +180,6 @@ describe('formatTableItemPropertyValue', () => {
184180
return result;
185181
};
186182

187-
beforeAll(() => {
188-
ui().switchMode('raw');
189-
});
190-
191183
it('should format undefined to empty string', () => {
192184
expect(formatTableItemPropertyValue(undefined)).toBe('');
193185
});

packages/plugin-lighthouse/src/lib/runner/utils.unit.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
auditOutputsSchema,
1414
} from '@code-pushup/models';
1515
import { MEMFS_VOLUME } from '@code-pushup/test-utils';
16-
import { logger, ui } from '@code-pushup/utils';
16+
import { logger } from '@code-pushup/utils';
1717
import { DEFAULT_CLI_FLAGS } from './constants.js';
1818
import { unsupportedDetailTypes } from './details/details.js';
1919
import type { LighthouseCliFlags } from './types.js';
@@ -247,7 +247,7 @@ describe('toAuditOutputs', () => {
247247
}) as Result,
248248
),
249249
);
250-
expect(ui()).not.toHaveLogs();
250+
expect(logger.warn).not.toHaveBeenCalled();
251251
});
252252

253253
it('should inform that for all unsupported details if verbose IS given', () => {

packages/utils/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,17 @@
2828
},
2929
"dependencies": {
3030
"@code-pushup/models": "0.87.1",
31-
"@poppinss/cliui": "^6.4.0",
3231
"ansis": "^3.3.0",
3332
"build-md": "^0.4.2",
3433
"bundle-require": "^5.1.0",
3534
"esbuild": "^0.25.2",
3635
"multi-progress-bars": "^5.0.3",
36+
"ora": "^9.0.0",
3737
"semver": "^7.6.0",
3838
"simple-git": "^3.20.0",
3939
"string-width": "^8.1.0",
40-
"ora": "^9.0.0",
41-
"zod": "^4.0.5",
42-
"wrap-ansi": "^9.0.2"
40+
"wrap-ansi": "^9.0.2",
41+
"zod": "^4.0.5"
4342
},
4443
"files": [
4544
"src",

packages/utils/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export {
8888
export { interpolate } from './lib/interpolate.js';
8989
export { logMultipleResults } from './lib/log-results.js';
9090
export { Logger, logger } from './lib/logger.js';
91-
export { ui, type CliUi } from './lib/logging.js';
9291
export { mergeConfigs } from './lib/merge-configs.js';
9392
export {
9493
addIndex,

packages/utils/src/lib/logging.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

testing/test-setup-config/src/lib/vitest-config-factory.unit.test.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,6 @@ describe('createVitestConfig', () => {
5353
expect(setupFiles).toContain(
5454
'../../testing/test-setup/src/lib/reset.mocks.ts',
5555
);
56-
expect(setupFiles).toContain(
57-
'../../testing/test-setup/src/lib/cliui.mock.ts',
58-
);
5956
expect(setupFiles).toContain(
6057
'../../testing/test-setup/src/lib/fs.mock.ts',
6158
);
@@ -68,9 +65,6 @@ describe('createVitestConfig', () => {
6865
expect(setupFiles).toContain(
6966
'../../testing/test-setup/src/lib/logger.mock.ts',
7067
);
71-
expect(setupFiles).toContain(
72-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
73-
);
7468
expect(setupFiles).toContain(
7569
'../../testing/test-setup/src/lib/extend/markdown-table.matcher.ts',
7670
);
@@ -145,9 +139,6 @@ describe('createVitestConfig', () => {
145139
expect(setupFiles).toContain(
146140
'../../testing/test-setup/src/lib/extend/path.matcher.ts',
147141
);
148-
expect(setupFiles).toContain(
149-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
150-
);
151142
});
152143

153144
it('should not enable typecheck for integration tests', () => {

testing/test-setup-config/src/lib/vitest-setup-files.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import type { TestKind } from './vitest-config-factory.js';
77
* which is why they use `../../` to navigate to the workspace root first.
88
*/
99
const CUSTOM_MATCHERS = [
10-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
1110
'../../testing/test-setup/src/lib/extend/markdown-table.matcher.ts',
1211
'../../testing/test-setup/src/lib/extend/jest-extended.matcher.ts',
1312
'../../testing/test-setup/src/lib/extend/path.matcher.ts',
@@ -23,7 +22,6 @@ const UNIT_TEST_SETUP_FILES = [
2322
'../../testing/test-setup/src/lib/fs.mock.ts',
2423
'../../testing/test-setup/src/lib/console.mock.ts',
2524
'../../testing/test-setup/src/lib/reset.mocks.ts',
26-
'../../testing/test-setup/src/lib/cliui.mock.ts',
2725
'../../testing/test-setup/src/lib/git.mock.ts',
2826
'../../testing/test-setup/src/lib/portal-client.mock.ts',
2927
'../../testing/test-setup/src/lib/logger.mock.ts',
Lines changed: 35 additions & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -1,185 +1,49 @@
11
import { describe, expect, it } from 'vitest';
2+
import type { TestKind } from './vitest-config-factory.js';
23
import { getSetupFiles } from './vitest-setup-files.js';
34

4-
describe('vitest-setup-files', () => {
5-
describe('getSetupFiles', () => {
6-
describe('unit test setup files', () => {
7-
it('should return all required setup files for unit tests', () => {
8-
const setupFiles = getSetupFiles('unit');
9-
10-
expect(setupFiles).toHaveLength(11);
11-
expect(setupFiles).toContain(
12-
'../../testing/test-setup/src/lib/console.mock.ts',
13-
);
14-
expect(setupFiles).toContain(
15-
'../../testing/test-setup/src/lib/reset.mocks.ts',
16-
);
17-
expect(setupFiles).toContain(
18-
'../../testing/test-setup/src/lib/cliui.mock.ts',
19-
);
20-
expect(setupFiles).toContain(
21-
'../../testing/test-setup/src/lib/fs.mock.ts',
22-
);
23-
expect(setupFiles).toContain(
24-
'../../testing/test-setup/src/lib/git.mock.ts',
25-
);
26-
expect(setupFiles).toContain(
27-
'../../testing/test-setup/src/lib/portal-client.mock.ts',
28-
);
29-
expect(setupFiles).toContain(
30-
'../../testing/test-setup/src/lib/logger.mock.ts',
31-
);
32-
expect(setupFiles).toContain(
33-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
34-
);
35-
expect(setupFiles).toContain(
36-
'../../testing/test-setup/src/lib/extend/markdown-table.matcher.ts',
37-
);
38-
expect(setupFiles).toContain(
39-
'../../testing/test-setup/src/lib/extend/jest-extended.matcher.ts',
40-
);
41-
expect(setupFiles).toContain(
42-
'../../testing/test-setup/src/lib/extend/path.matcher.ts',
43-
);
44-
});
45-
});
46-
47-
describe('integration test setup files', () => {
48-
it('should return exactly 8 setup files with essential mocks and custom matchers', () => {
49-
const setupFiles = getSetupFiles('int');
50-
51-
expect(setupFiles).toHaveLength(8);
52-
expect(setupFiles).toContain(
53-
'../../testing/test-setup/src/lib/console.mock.ts',
54-
);
55-
expect(setupFiles).toContain(
56-
'../../testing/test-setup/src/lib/reset.mocks.ts',
57-
);
58-
expect(setupFiles).toContain(
59-
'../../testing/test-setup/src/lib/chrome-path.mock.ts',
60-
);
61-
expect(setupFiles).toContain(
62-
'../../testing/test-setup/src/lib/logger.mock.ts',
63-
);
64-
});
65-
66-
it('should include custom matchers for integration tests', () => {
67-
const setupFiles = getSetupFiles('int');
68-
69-
expect(setupFiles).toContain(
70-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
71-
);
72-
expect(setupFiles).toContain(
73-
'../../testing/test-setup/src/lib/extend/markdown-table.matcher.ts',
74-
);
75-
expect(setupFiles).toContain(
76-
'../../testing/test-setup/src/lib/extend/jest-extended.matcher.ts',
77-
);
78-
expect(setupFiles).toContain(
79-
'../../testing/test-setup/src/lib/extend/path.matcher.ts',
80-
);
81-
});
82-
83-
it('should NOT include fs, cliui, git, and portal-client mocks for integration tests', () => {
84-
const setupFiles = getSetupFiles('int');
85-
86-
expect(setupFiles).not.toContain(
87-
'../../testing/test-setup/src/lib/fs.mock.ts',
88-
);
89-
expect(setupFiles).not.toContain(
90-
'../../testing/test-setup/src/lib/cliui.mock.ts',
91-
);
92-
expect(setupFiles).not.toContain(
93-
'../../testing/test-setup/src/lib/git.mock.ts',
94-
);
95-
expect(setupFiles).not.toContain(
96-
'../../testing/test-setup/src/lib/portal-client.mock.ts',
97-
);
98-
});
99-
});
100-
101-
describe('e2e test setup files', () => {
102-
it('should return exactly 5 setup files with minimal mocks', () => {
103-
const setupFiles = getSetupFiles('e2e');
104-
105-
expect(setupFiles).toHaveLength(5);
106-
expect(setupFiles).toContain(
107-
'../../testing/test-setup/src/lib/reset.mocks.ts',
108-
);
109-
expect(setupFiles).toContain(
110-
'../../testing/test-setup/src/lib/extend/ui-logger.matcher.ts',
111-
);
112-
expect(setupFiles).toContain(
113-
'../../testing/test-setup/src/lib/extend/markdown-table.matcher.ts',
114-
);
115-
expect(setupFiles).toContain(
116-
'../../testing/test-setup/src/lib/extend/jest-extended.matcher.ts',
117-
);
118-
expect(setupFiles).toContain(
119-
'../../testing/test-setup/src/lib/extend/path.matcher.ts',
120-
);
121-
});
122-
123-
it('should NOT include any other mocks for e2e tests', () => {
124-
const setupFiles = getSetupFiles('e2e');
125-
126-
expect(setupFiles).not.toContain(
127-
'../../testing/test-setup/src/lib/console.mock.ts',
128-
);
129-
expect(setupFiles).not.toContain(
130-
'../../testing/test-setup/src/lib/fs.mock.ts',
131-
);
132-
expect(setupFiles).not.toContain(
133-
'../../testing/test-setup/src/lib/git.mock.ts',
134-
);
135-
expect(setupFiles).not.toContain(
136-
'../../testing/test-setup/src/lib/cliui.mock.ts',
137-
);
138-
expect(setupFiles).not.toContain(
139-
'../../testing/test-setup/src/lib/portal-client.mock.ts',
140-
);
141-
});
142-
});
5+
describe('getSetupFiles', () => {
6+
describe('relative paths', () => {
7+
it.each<TestKind>(['unit', 'int', 'e2e'])(
8+
'should return paths for %s-test relative to config file location',
9+
kind => {
10+
const setupFiles = getSetupFiles(kind);
11+
expect(setupFiles).toSatisfyAll<string>(path =>
12+
/^\.\.\/\.\.\//.test(path),
13+
);
14+
},
15+
);
16+
});
14317

144-
describe('relative paths', () => {
145-
it('should return paths relative to config file location', () => {
146-
const unitFiles = getSetupFiles('unit');
147-
const intFiles = getSetupFiles('int');
148-
const e2eFiles = getSetupFiles('e2e');
18+
describe('return type', () => {
19+
it('should return an array of strings', () => {
20+
const setupFiles = getSetupFiles('unit');
14921

150-
[...unitFiles, ...intFiles, ...e2eFiles].forEach(path => {
151-
expect(path).toMatch(/^\.\.\/\.\.\//);
152-
});
153-
});
22+
expect(Array.isArray(setupFiles)).toBe(true);
23+
expect(setupFiles).toSatisfyAll<unknown>(
24+
item => typeof item === 'string',
25+
);
15426
});
27+
});
15528

156-
describe('return type', () => {
157-
it('should return a readonly array', () => {
158-
const setupFiles = getSetupFiles('unit');
29+
describe('test kind differences', () => {
30+
it('should return different setup files for different test kinds', () => {
31+
const unitFiles = getSetupFiles('unit');
32+
const intFiles = getSetupFiles('int');
33+
const e2eFiles = getSetupFiles('e2e');
15934

160-
expect(Array.isArray(setupFiles)).toBe(true);
161-
});
35+
expect(unitFiles.length).not.toBe(intFiles.length);
36+
expect(intFiles.length).not.toBe(e2eFiles.length);
37+
expect(unitFiles.length).not.toBe(e2eFiles.length);
16238
});
16339

164-
describe('test kind differences', () => {
165-
it('should return different setup files for different test kinds', () => {
166-
const unitFiles = getSetupFiles('unit');
167-
const intFiles = getSetupFiles('int');
168-
const e2eFiles = getSetupFiles('e2e');
169-
170-
expect(unitFiles.length).not.toBe(intFiles.length);
171-
expect(intFiles.length).not.toBe(e2eFiles.length);
172-
expect(unitFiles.length).not.toBe(e2eFiles.length);
173-
});
174-
175-
it('should show hierarchy: unit has most, e2e has least', () => {
176-
const unitFiles = getSetupFiles('unit');
177-
const intFiles = getSetupFiles('int');
178-
const e2eFiles = getSetupFiles('e2e');
40+
it('should show hierarchy: unit has most, e2e has least', () => {
41+
const unitFiles = getSetupFiles('unit');
42+
const intFiles = getSetupFiles('int');
43+
const e2eFiles = getSetupFiles('e2e');
17944

180-
expect(unitFiles.length).toBeGreaterThan(intFiles.length);
181-
expect(intFiles.length).toBeGreaterThan(e2eFiles.length);
182-
});
45+
expect(unitFiles.length).toBeGreaterThan(intFiles.length);
46+
expect(intFiles.length).toBeGreaterThan(e2eFiles.length);
18347
});
18448
});
18549
});

0 commit comments

Comments
 (0)