Skip to content

Commit bbef42a

Browse files
feat(sdk/testing): change axe-core from a dependency to a peer dependency (#746)
1 parent b1e4706 commit bbef42a

File tree

4 files changed

+94
-2
lines changed

4 files changed

+94
-2
lines changed

libs/components/packages/src/schematics/migrations/migration-collection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
"factory": "./update-7/add-autonumeric-dependency",
1111
"description": "Add autonumeric as a dependency since @skyux/autonumeric@7 references autonumeric as a peer."
1212
},
13+
"add-axe-core-dependency": {
14+
"version": "7.0.0-beta.0",
15+
"factory": "./update-7/add-axe-core-dependency",
16+
"description": "Add axe-core as a dependency since @skyux-sdk/testing@7 references axe-core as a peer."
17+
},
1318
"add-moment-dependency": {
1419
"version": "7.0.0-beta.0",
1520
"factory": "./update-7/add-moment-dependency",
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { SchematicTestRunner } from '@angular-devkit/schematics/testing';
2+
3+
import { join } from 'path';
4+
5+
import { createTestApp } from '../../testing/scaffold';
6+
7+
describe('Migrations > Add axe-core as a dependency', () => {
8+
const runner = new SchematicTestRunner(
9+
'migrations',
10+
join(__dirname, '../migration-collection.json')
11+
);
12+
13+
async function setupTest() {
14+
const tree = await createTestApp(runner, {
15+
projectName: 'my-app',
16+
});
17+
18+
return {
19+
runSchematic: () =>
20+
runner
21+
.runSchematicAsync('add-axe-core-dependency', {}, tree)
22+
.toPromise(),
23+
tree,
24+
};
25+
}
26+
27+
it('should add axe-core as a dependency if @skyux-sdk/testing installed', async () => {
28+
const { runSchematic, tree } = await setupTest();
29+
30+
tree.overwrite(
31+
'/package.json',
32+
'{"devDependencies": { "@skyux-sdk/testing": "7.0.0"}}'
33+
);
34+
35+
await runSchematic();
36+
37+
expect(tree.readJson('/package.json')).toEqual({
38+
devDependencies: {
39+
'@skyux-sdk/testing': '7.0.0',
40+
'axe-core': '3.5.6',
41+
},
42+
});
43+
});
44+
45+
it('should not add axe-core as a dependency if @skyux-sdk/testing not installed', async () => {
46+
const { runSchematic, tree } = await setupTest();
47+
48+
tree.overwrite('/package.json', '{}');
49+
50+
await runSchematic();
51+
52+
expect(tree.readJson('/package.json')).toEqual({});
53+
});
54+
});
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { Rule } from '@angular-devkit/schematics';
2+
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
3+
import {
4+
NodeDependencyType,
5+
addPackageJsonDependency,
6+
} from '@schematics/angular/utility/dependencies';
7+
8+
import { readRequiredFile } from '../../utility/tree';
9+
10+
export default function (): Rule {
11+
return async (tree, context) => {
12+
const packageJson: {
13+
dependencies?: Record<string, string>;
14+
devDependencies?: Record<string, string>;
15+
} = JSON.parse(readRequiredFile(tree, '/package.json'));
16+
17+
const dependencies: Record<string, string> = {
18+
...(packageJson.dependencies || {}),
19+
...(packageJson.devDependencies || {}),
20+
};
21+
22+
if (dependencies['@skyux-sdk/testing']) {
23+
context.addTask(new NodePackageInstallTask());
24+
25+
addPackageJsonDependency(tree, {
26+
type: NodeDependencyType.Dev,
27+
name: 'axe-core',
28+
version: '3.5.6',
29+
overwrite: false,
30+
});
31+
}
32+
};
33+
}

libs/sdk/testing/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
"@angular/common": "^14.2.0",
2020
"@angular/core": "^14.2.0",
2121
"@angular/platform-browser": "^14.2.0",
22-
"@skyux/i18n": "0.0.0-PLACEHOLDER"
22+
"@skyux/i18n": "0.0.0-PLACEHOLDER",
23+
"axe-core": "^3.5.6 || ^4.5.0"
2324
},
2425
"dependencies": {
25-
"axe-core": "3.5.6",
2626
"tslib": "^2.3.1"
2727
}
2828
}

0 commit comments

Comments
 (0)