Skip to content

Commit 94e78eb

Browse files
authored
feat: enable Angular CT support (#23089)
1 parent f73810d commit 94e78eb

File tree

14 files changed

+47
-46
lines changed

14 files changed

+47
-46
lines changed

cli/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@
107107
"vue",
108108
"react",
109109
"vue2",
110-
"react18"
110+
"react18",
111+
"angular"
111112
],
112113
"bin": {
113114
"cypress": "bin/cypress"
@@ -149,6 +150,11 @@
149150
"./mount-utils": {
150151
"require": "./mount-utils/dist/index.js",
151152
"types": "./mount-utils/dist/index.d.ts"
153+
},
154+
"./angular": {
155+
"import": "./angular/dist/index.js",
156+
"require": "./angular/dist/index.js",
157+
"types": "./angular/dist/index.d.ts"
152158
}
153159
},
154160
"workspaces": {

cli/scripts/post-build.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const npmModulesToCopy = [
1212
'react18',
1313
'vue',
1414
'vue2',
15+
'angular',
1516
]
1617

1718
npmModulesToCopy.forEach((folder) => {

cli/types/cypress.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3044,7 +3044,7 @@ declare namespace Cypress {
30443044

30453045
type DevServerConfigOptions = {
30463046
bundler: 'webpack'
3047-
framework: 'react' | 'vue' | 'vue-cli' | 'nuxt' | 'create-react-app' | 'next'
3047+
framework: 'react' | 'vue' | 'vue-cli' | 'nuxt' | 'create-react-app' | 'next' | 'angular'
30483048
webpackConfig?: PickConfigOpt<'webpackConfig'>
30493049
} | {
30503050
bundler: 'vite'

npm/angular/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"scripts": {
77
"prebuild": "rimraf dist",
88
"build": "tsc || echo 'built, with type errors'",
9+
"postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
910
"build-prod": "yarn build",
1011
"check-ts": "tsc --noEmit"
1112
},

npm/webpack-dev-server/cypress/e2e/angular.cy.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ for (const project of WEBPACK_REACT) {
1212
continue
1313
}
1414

15-
// TODO: revert once Angular is slated for release
16-
describe.skip(`Working with ${project}`, () => {
15+
describe(`Working with ${project}`, () => {
1716
beforeEach(() => {
1817
cy.scaffoldProject(project)
1918
cy.openProject(project)

npm/webpack-dev-server/src/devServer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { nuxtHandler } from './helpers/nuxtHandler'
1212
import { createReactAppHandler } from './helpers/createReactAppHandler'
1313
import { nextHandler } from './helpers/nextHandler'
1414
import { sourceDefaultWebpackDependencies, SourceRelativeWebpackResult } from './helpers/sourceRelativeWebpackModules'
15+
import { angularHandler } from './helpers/angularHandler'
1516

1617
const debug = debugLib('cypress:webpack-dev-server:devServer')
1718

@@ -25,7 +26,7 @@ export type WebpackDevServerConfig = {
2526
webpackConfig?: unknown // Derived from the user's webpack
2627
}
2728

28-
export const ALL_FRAMEWORKS = ['create-react-app', 'nuxt', 'react', 'vue-cli', 'next', 'vue'] as const
29+
export const ALL_FRAMEWORKS = ['create-react-app', 'nuxt', 'react', 'vue-cli', 'next', 'vue', 'angular'] as const
2930

3031
/**
3132
* @internal
@@ -115,9 +116,8 @@ async function getPreset (devServerConfig: WebpackDevServerConfig): Promise<Opti
115116
case 'next':
116117
return await nextHandler(devServerConfig)
117118

118-
// TODO: revert once Angular is slated for release
119-
// case 'angular':
120-
// return await angularHandler(devServerConfig)
119+
case 'angular':
120+
return await angularHandler(devServerConfig)
121121

122122
case 'react':
123123
case 'vue':

npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ const frameworkWebpackMapper: FrameworkWebpackMapper = {
6565
react: undefined,
6666
vue: undefined,
6767
next: 'next',
68-
// TODO: revert once Angular is slated for release
69-
// 'angular': '@angular-devkit/build-angular',
68+
'angular': '@angular-devkit/build-angular',
7069
}
7170

7271
// Source the users framework from the provided projectRoot. The framework, if available, will serve

npm/webpack-dev-server/src/makeDefaultWebpackConfig.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ export function makeDefaultWebpackConfig (
3838
plugins: [
3939
new HtmlWebpackPlugin({
4040
template: indexHtmlFile,
41-
// TODO: revert once Angular is slated for release
4241
// Angular generates all of it's scripts with <script type="module">. Live-reloading breaks without this option.
43-
// ...(config.devServerConfig.framework === 'angular' ? { scriptLoading: 'module' } : {}),
42+
...(config.devServerConfig.framework === 'angular' ? { scriptLoading: 'module' } : {}),
4443
}),
4544
],
4645
} as any

npm/webpack-dev-server/test/handlers/angularHandler.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ const projectConfig: AngularJsonProjectConfig = {
4040
},
4141
}
4242

43-
// TODO: revert once Angular is slated for release
44-
describe.skip('angularHandler', function () {
43+
describe('angularHandler', function () {
4544
this.timeout(1000 * 60)
4645

4746
it('sources the config from angular-13', async () => {
@@ -54,7 +53,7 @@ describe.skip('angularHandler', function () {
5453
projectRoot,
5554
specPattern: 'src/**/*.cy.ts',
5655
} as Cypress.PluginConfigOptions,
57-
// framework: 'angular',
56+
framework: 'angular',
5857
} as WebpackDevServerConfig
5958

6059
const { frameworkConfig: webpackConfig, sourceWebpackModulesResult } = await angularHandler(devServerConfig)
@@ -79,7 +78,7 @@ describe.skip('angularHandler', function () {
7978
projectRoot,
8079
specPattern: 'src/**/*.cy.ts',
8180
} as Cypress.PluginConfigOptions,
82-
// framework: 'angular',
81+
framework: 'angular',
8382
} as WebpackDevServerConfig
8483

8584
const { frameworkConfig: webpackConfig, sourceWebpackModulesResult } = await angularHandler(devServerConfig)

packages/graphql/schemas/schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ type FileParts implements Node {
871871
}
872872

873873
enum FrontendFrameworkEnum {
874+
angular
874875
nextjs
875876
nuxtjs
876877
react

0 commit comments

Comments
 (0)