cypress 13.3.0 → 13.3.1

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.
Files changed (46) hide show
  1. package/angular/angular/README.md +10 -0
  2. package/angular/angular/dist/index.d.ts +128 -0
  3. package/angular/angular/dist/index.js +333 -0
  4. package/angular/angular/package.json +77 -0
  5. package/angular/package.json +9 -1
  6. package/lib/exec/spawn.js +1 -1
  7. package/lib/util.js +1 -1
  8. package/mount-utils/mount-utils/README.md +140 -0
  9. package/mount-utils/mount-utils/dist/index.d.ts +40 -0
  10. package/mount-utils/mount-utils/dist/index.js +68 -0
  11. package/mount-utils/mount-utils/package.json +46 -0
  12. package/mount-utils/package.json +10 -1
  13. package/package.json +20 -4
  14. package/react/package.json +13 -0
  15. package/react/react/README.md +14 -0
  16. package/react/react/dist/cypress-react.cjs.js +943 -0
  17. package/react/react/dist/cypress-react.esm-bundler.js +917 -0
  18. package/react/react/dist/index.d.ts +111 -0
  19. package/react/react/package.json +111 -0
  20. package/react18/package.json +10 -0
  21. package/react18/react18/README.md +7 -0
  22. package/react18/react18/dist/cypress-react.cjs.js +592 -0
  23. package/react18/react18/dist/cypress-react.esm-bundler.js +569 -0
  24. package/react18/react18/dist/index.d.ts +78 -0
  25. package/react18/react18/package.json +71 -0
  26. package/svelte/package.json +13 -1
  27. package/svelte/svelte/README.md +15 -0
  28. package/svelte/svelte/dist/cypress-svelte.cjs.js +122 -0
  29. package/svelte/svelte/dist/cypress-svelte.esm-bundler.js +120 -0
  30. package/svelte/svelte/dist/index.d.ts +201 -0
  31. package/svelte/svelte/package.json +56 -0
  32. package/types/cypress.d.ts +2 -2
  33. package/vue/package.json +13 -1
  34. package/vue/vue/README.md +14 -0
  35. package/vue/vue/dist/cypress-vue.cjs.js +8582 -0
  36. package/vue/vue/dist/cypress-vue.esm-bundler.js +8560 -0
  37. package/vue/vue/dist/index.d.ts +1392 -0
  38. package/vue/vue/package.json +96 -0
  39. package/vue2/dist/cypress-vue2.cjs.js +1 -1
  40. package/vue2/dist/cypress-vue2.esm-bundler.js +1 -1
  41. package/vue2/package.json +13 -1
  42. package/vue2/vue2/README.md +7 -0
  43. package/vue2/vue2/dist/cypress-vue2.cjs.js +20045 -0
  44. package/vue2/vue2/dist/cypress-vue2.esm-bundler.js +20042 -0
  45. package/vue2/vue2/dist/index.d.ts +364 -0
  46. package/vue2/vue2/package.json +65 -0
@@ -0,0 +1,10 @@
1
+ # @cypress/angular
2
+
3
+ Mount Angular components in the open source [Cypress.io](https://www.cypress.io/) test runner
4
+
5
+ > **Note:** This package is bundled with the `cypress` package and should not need to be installed separately. See the [Angular Component Testing Docs](https://docs.cypress.io/guides/component-testing/angular/overview) for mounting Angular components. Installing and importing `mount` from `@cypress/angular` should only be done for advanced use-cases.
6
+ ## Development
7
+
8
+ Run `yarn build` to compile and sync packages to the `cypress` cli package.
9
+
10
+ ## [Changelog](./CHANGELOG.md)
@@ -0,0 +1,128 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import { Type } from '@angular/core';
4
+ import { TestModuleMetadata, ComponentFixture, TestComponentRenderer } from '@angular/core/testing';
5
+
6
+ /**
7
+ * Additional module configurations needed while mounting the component, like
8
+ * providers, declarations, imports and even component @Inputs()
9
+ *
10
+ *
11
+ * @interface MountConfig
12
+ * @see https://angular.io/api/core/testing/TestModuleMetadata
13
+ */
14
+ interface MountConfig<T> extends TestModuleMetadata {
15
+ /**
16
+ * @memberof MountConfig
17
+ * @description flag to automatically create a cy.spy() for every component @Output() property
18
+ * @example
19
+ * export class ButtonComponent {
20
+ * @Output clicked = new EventEmitter()
21
+ * }
22
+ *
23
+ * cy.mount(ButtonComponent, { autoSpyOutputs: true })
24
+ * cy.get('@clickedSpy).should('have.been.called')
25
+ */
26
+ autoSpyOutputs?: boolean;
27
+ /**
28
+ * @memberof MountConfig
29
+ * @description flag defaulted to true to automatically detect changes in your components
30
+ */
31
+ autoDetectChanges?: boolean;
32
+ /**
33
+ * @memberof MountConfig
34
+ * @example
35
+ * import { ButtonComponent } from 'button/button.component'
36
+ * it('renders a button with Save text', () => {
37
+ * cy.mount(ButtonComponent, { componentProperties: { text: 'Save' }})
38
+ * cy.get('button').contains('Save')
39
+ * })
40
+ *
41
+ * it('renders a button with a cy.spy() replacing EventEmitter', () => {
42
+ * cy.mount(ButtonComponent, {
43
+ * componentProperties: {
44
+ * clicked: cy.spy().as('mySpy)
45
+ * }
46
+ * })
47
+ * cy.get('button').click()
48
+ * cy.get('@mySpy').should('have.been.called')
49
+ * })
50
+ */
51
+ componentProperties?: Partial<{
52
+ [P in keyof T]: T[P];
53
+ }>;
54
+ }
55
+ /**
56
+ * Type that the `mount` function returns
57
+ * @type MountResponse<T>
58
+ */
59
+ declare type MountResponse<T> = {
60
+ /**
61
+ * Fixture for debugging and testing a component.
62
+ *
63
+ * @memberof MountResponse
64
+ * @see https://angular.io/api/core/testing/ComponentFixture
65
+ */
66
+ fixture: ComponentFixture<T>;
67
+ /**
68
+ * The instance of the root component class
69
+ *
70
+ * @memberof MountResponse
71
+ * @see https://angular.io/api/core/testing/ComponentFixture#componentInstance
72
+ */
73
+ component: T;
74
+ };
75
+ declare class CypressTestComponentRenderer extends TestComponentRenderer {
76
+ insertRootElement(rootElId: string): void;
77
+ removeAllRootElements(): void;
78
+ }
79
+ /**
80
+ * Mounts an Angular component inside Cypress browser
81
+ *
82
+ * @param component Angular component being mounted or its template
83
+ * @param config configuration used to configure the TestBed
84
+ * @example
85
+ * import { mount } from '@cypress/angular'
86
+ * import { StepperComponent } from './stepper.component'
87
+ * import { MyService } from 'services/my.service'
88
+ * import { SharedModule } from 'shared/shared.module';
89
+ * it('mounts', () => {
90
+ * mount(StepperComponent, {
91
+ * providers: [MyService],
92
+ * imports: [SharedModule]
93
+ * })
94
+ * cy.get('[data-cy=increment]').click()
95
+ * cy.get('[data-cy=counter]').should('have.text', '1')
96
+ * })
97
+ *
98
+ * // or
99
+ *
100
+ * it('mounts with template', () => {
101
+ * mount('<app-stepper></app-stepper>', {
102
+ * declarations: [StepperComponent],
103
+ * })
104
+ * })
105
+ *
106
+ * @see {@link https://on.cypress.io/mounting-angular} for more details.
107
+ *
108
+ * @returns A component and component fixture
109
+ */
110
+ declare function mount<T>(component: Type<T> | string, config?: MountConfig<T>): Cypress.Chainable<MountResponse<T>>;
111
+ /**
112
+ * Creates a new Event Emitter and then spies on it's `emit` method
113
+ *
114
+ * @param {string} alias name you want to use for your cy.spy() alias
115
+ * @returns EventEmitter<T>
116
+ * @example
117
+ * import { StepperComponent } from './stepper.component'
118
+ * import { mount, createOutputSpy } from '@cypress/angular'
119
+ *
120
+ * it('Has spy', () => {
121
+ * mount(StepperComponent, { componentProperties: { change: createOutputSpy('changeSpy') } })
122
+ * cy.get('[data-cy=increment]').click()
123
+ * cy.get('@changeSpy').should('have.been.called')
124
+ * })
125
+ */
126
+ declare const createOutputSpy: <T>(alias: string) => any;
127
+
128
+ export { CypressTestComponentRenderer, MountConfig, MountResponse, createOutputSpy, mount };
@@ -0,0 +1,333 @@
1
+
2
+ /**
3
+ * @cypress/angular v0.0.0-development
4
+ * (c) 2023 Cypress.io
5
+ * Released under the MIT License
6
+ */
7
+
8
+ import 'zone.js';
9
+ import 'zone.js/testing';
10
+ import { CommonModule } from '@angular/common';
11
+ import { Injectable, Component, EventEmitter, SimpleChange, ErrorHandler } from '@angular/core';
12
+ import { getTestBed, TestComponentRenderer, TestBed } from '@angular/core/testing';
13
+ import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
14
+
15
+ /******************************************************************************
16
+ Copyright (c) Microsoft Corporation.
17
+
18
+ Permission to use, copy, modify, and/or distribute this software for any
19
+ purpose with or without fee is hereby granted.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
22
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
23
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
24
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
25
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
26
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
27
+ PERFORMANCE OF THIS SOFTWARE.
28
+ ***************************************************************************** */
29
+
30
+ function __rest(s, e) {
31
+ var t = {};
32
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
33
+ t[p] = s[p];
34
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
35
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
36
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
37
+ t[p[i]] = s[p[i]];
38
+ }
39
+ return t;
40
+ }
41
+
42
+ function __decorate(decorators, target, key, desc) {
43
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
46
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
47
+ }
48
+
49
+ const ROOT_SELECTOR = '[data-cy-root]';
50
+ /**
51
+ * Gets the root element used to mount the component.
52
+ * @returns {HTMLElement} The root element
53
+ * @throws {Error} If the root element is not found
54
+ */
55
+ const getContainerEl = () => {
56
+ const el = document.querySelector(ROOT_SELECTOR);
57
+ if (el) {
58
+ return el;
59
+ }
60
+ throw Error(`No element found that matches selector ${ROOT_SELECTOR}. Please add a root element with data-cy-root attribute to your "component-index.html" file so that Cypress can attach your component to the DOM.`);
61
+ };
62
+ /**
63
+ * Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
64
+ * @param optionalCallback Callback to be called before the next test runs
65
+ */
66
+ function setupHooks(optionalCallback) {
67
+ // We don't want CT side effects to run when e2e
68
+ // testing so we early return.
69
+ // System test to verify CT side effects do not pollute e2e: system-tests/test/e2e_with_mount_import_spec.ts
70
+ if (Cypress.testingType !== 'component') {
71
+ return;
72
+ }
73
+ // When running component specs, we cannot allow "cy.visit"
74
+ // because it will wipe out our preparation work, and does not make much sense
75
+ // thus we overwrite "cy.visit" to throw an error
76
+ Cypress.Commands.overwrite('visit', () => {
77
+ throw new Error('cy.visit from a component spec is not allowed');
78
+ });
79
+ Cypress.Commands.overwrite('session', () => {
80
+ throw new Error('cy.session from a component spec is not allowed');
81
+ });
82
+ Cypress.Commands.overwrite('origin', () => {
83
+ throw new Error('cy.origin from a component spec is not allowed');
84
+ });
85
+ // @ts-ignore
86
+ Cypress.on('test:before:after:run:async', () => {
87
+ optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
88
+ });
89
+ }
90
+
91
+ /**
92
+ * @hack fixes "Mocha has already been patched with Zone" error.
93
+ */
94
+ // @ts-ignore
95
+ window.Mocha['__zone_patch__'] = false;
96
+ let activeFixture = null;
97
+ function cleanup() {
98
+ // Not public, we need to call this to remove the last component from the DOM
99
+ try {
100
+ getTestBed().tearDownTestingModule();
101
+ }
102
+ catch (e) {
103
+ const notSupportedError = new Error(`Failed to teardown component. The version of Angular you are using may not be officially supported.`);
104
+ notSupportedError.docsUrl = 'https://on.cypress.io/component-framework-configuration';
105
+ throw notSupportedError;
106
+ }
107
+ getTestBed().resetTestingModule();
108
+ activeFixture = null;
109
+ }
110
+ // 'zone.js/testing' is not properly aliasing `it.skip` but it does provide `xit`/`xspecify`
111
+ // Written up under https://github.com/angular/angular/issues/46297 but is not seeing movement
112
+ // so we'll patch here pending a fix in that library
113
+ // @ts-ignore Ignore so that way we can bypass semantic error TS7017: Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
114
+ globalThis.it.skip = globalThis.xit;
115
+ let CypressAngularErrorHandler = class CypressAngularErrorHandler {
116
+ handleError(error) {
117
+ throw error;
118
+ }
119
+ };
120
+ CypressAngularErrorHandler = __decorate([
121
+ Injectable()
122
+ ], CypressAngularErrorHandler);
123
+ /**
124
+ * Bootstraps the TestModuleMetaData passed to the TestBed
125
+ *
126
+ * @param {Type<T>} component Angular component being mounted
127
+ * @param {MountConfig} config TestBed configuration passed into the mount function
128
+ * @returns {MountConfig} MountConfig
129
+ */
130
+ function bootstrapModule(component, config) {
131
+ var _a;
132
+ const testModuleMetaData = __rest(config, ["componentProperties"]);
133
+ if (!testModuleMetaData.declarations) {
134
+ testModuleMetaData.declarations = [];
135
+ }
136
+ if (!testModuleMetaData.imports) {
137
+ testModuleMetaData.imports = [];
138
+ }
139
+ if (!testModuleMetaData.providers) {
140
+ testModuleMetaData.providers = [];
141
+ }
142
+ // Replace default error handler since it will swallow uncaught exceptions.
143
+ // We want these to be uncaught so Cypress catches it and fails the test
144
+ testModuleMetaData.providers.push({
145
+ provide: ErrorHandler,
146
+ useClass: CypressAngularErrorHandler,
147
+ });
148
+ // check if the component is a standalone component
149
+ if ((_a = component.ɵcmp) === null || _a === void 0 ? void 0 : _a.standalone) {
150
+ testModuleMetaData.imports.push(component);
151
+ }
152
+ else {
153
+ testModuleMetaData.declarations.push(component);
154
+ }
155
+ if (!testModuleMetaData.imports.includes(CommonModule)) {
156
+ testModuleMetaData.imports.push(CommonModule);
157
+ }
158
+ return testModuleMetaData;
159
+ }
160
+ let CypressTestComponentRenderer = class CypressTestComponentRenderer extends TestComponentRenderer {
161
+ insertRootElement(rootElId) {
162
+ this.removeAllRootElements();
163
+ const rootElement = getContainerEl();
164
+ rootElement.setAttribute('id', rootElId);
165
+ }
166
+ removeAllRootElements() {
167
+ getContainerEl().innerHTML = '';
168
+ }
169
+ };
170
+ CypressTestComponentRenderer = __decorate([
171
+ Injectable()
172
+ ], CypressTestComponentRenderer);
173
+ /**
174
+ * Initializes the TestBed
175
+ *
176
+ * @param {Type<T> | string} component Angular component being mounted or its template
177
+ * @param {MountConfig} config TestBed configuration passed into the mount function
178
+ * @returns {Type<T>} componentFixture
179
+ */
180
+ function initTestBed(component, config) {
181
+ const componentFixture = createComponentFixture(component);
182
+ getTestBed().configureTestingModule(Object.assign({}, bootstrapModule(componentFixture, config)));
183
+ getTestBed().overrideProvider(TestComponentRenderer, { useValue: new CypressTestComponentRenderer() });
184
+ return componentFixture;
185
+ }
186
+ let WrapperComponent = class WrapperComponent {
187
+ };
188
+ WrapperComponent = __decorate([
189
+ Component({ selector: 'cy-wrapper-component', template: '' })
190
+ ], WrapperComponent);
191
+ /**
192
+ * Returns the Component if Type<T> or creates a WrapperComponent
193
+ *
194
+ * @param {Type<T> | string} component The component you want to create a fixture of
195
+ * @returns {Type<T> | WrapperComponent}
196
+ */
197
+ function createComponentFixture(component) {
198
+ if (typeof component === 'string') {
199
+ // getTestBed().overrideTemplate is available in v14+
200
+ // The static TestBed.overrideTemplate is available across versions
201
+ TestBed.overrideTemplate(WrapperComponent, component);
202
+ return WrapperComponent;
203
+ }
204
+ return component;
205
+ }
206
+ /**
207
+ * Creates the ComponentFixture
208
+ *
209
+ * @param {Type<T>} component Angular component being mounted
210
+ * @param {MountConfig<T>} config MountConfig
211
+
212
+ * @returns {ComponentFixture<T>} ComponentFixture
213
+ */
214
+ function setupFixture(component, config) {
215
+ const fixture = getTestBed().createComponent(component);
216
+ setupComponent(config, fixture);
217
+ fixture.whenStable().then(() => {
218
+ var _a;
219
+ fixture.autoDetectChanges((_a = config.autoDetectChanges) !== null && _a !== void 0 ? _a : true);
220
+ });
221
+ return fixture;
222
+ }
223
+ /**
224
+ * Gets the componentInstance and Object.assigns any componentProperties() passed in the MountConfig
225
+ *
226
+ * @param {MountConfig} config TestBed configuration passed into the mount function
227
+ * @param {ComponentFixture<T>} fixture Fixture for debugging and testing a component.
228
+ * @returns {T} Component being mounted
229
+ */
230
+ function setupComponent(config, fixture) {
231
+ let component = fixture.componentInstance;
232
+ if (config === null || config === void 0 ? void 0 : config.componentProperties) {
233
+ component = Object.assign(component, config.componentProperties);
234
+ }
235
+ if (config.autoSpyOutputs) {
236
+ Object.keys(component).forEach((key) => {
237
+ const property = component[key];
238
+ if (property instanceof EventEmitter) {
239
+ component[key] = createOutputSpy(`${key}Spy`);
240
+ }
241
+ });
242
+ }
243
+ // Manually call ngOnChanges when mounting components using the class syntax.
244
+ // This is necessary because we are assigning input values to the class directly
245
+ // on mount and therefore the ngOnChanges() lifecycle is not triggered.
246
+ if (component.ngOnChanges && config.componentProperties) {
247
+ const { componentProperties } = config;
248
+ const simpleChanges = Object.entries(componentProperties).reduce((acc, [key, value]) => {
249
+ acc[key] = new SimpleChange(null, value, true);
250
+ return acc;
251
+ }, {});
252
+ if (Object.keys(componentProperties).length > 0) {
253
+ component.ngOnChanges(simpleChanges);
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Mounts an Angular component inside Cypress browser
259
+ *
260
+ * @param component Angular component being mounted or its template
261
+ * @param config configuration used to configure the TestBed
262
+ * @example
263
+ * import { mount } from '@cypress/angular'
264
+ * import { StepperComponent } from './stepper.component'
265
+ * import { MyService } from 'services/my.service'
266
+ * import { SharedModule } from 'shared/shared.module';
267
+ * it('mounts', () => {
268
+ * mount(StepperComponent, {
269
+ * providers: [MyService],
270
+ * imports: [SharedModule]
271
+ * })
272
+ * cy.get('[data-cy=increment]').click()
273
+ * cy.get('[data-cy=counter]').should('have.text', '1')
274
+ * })
275
+ *
276
+ * // or
277
+ *
278
+ * it('mounts with template', () => {
279
+ * mount('<app-stepper></app-stepper>', {
280
+ * declarations: [StepperComponent],
281
+ * })
282
+ * })
283
+ *
284
+ * @see {@link https://on.cypress.io/mounting-angular} for more details.
285
+ *
286
+ * @returns A component and component fixture
287
+ */
288
+ function mount(component, config = {}) {
289
+ // Remove last mounted component if cy.mount is called more than once in a test
290
+ if (activeFixture) {
291
+ cleanup();
292
+ }
293
+ const componentFixture = initTestBed(component, config);
294
+ activeFixture = setupFixture(componentFixture, config);
295
+ const mountResponse = {
296
+ fixture: activeFixture,
297
+ component: activeFixture.componentInstance,
298
+ };
299
+ const logMessage = typeof component === 'string' ? 'Component' : componentFixture.name;
300
+ Cypress.log({
301
+ name: 'mount',
302
+ message: logMessage,
303
+ consoleProps: () => ({ result: mountResponse }),
304
+ });
305
+ return cy.wrap(mountResponse, { log: false });
306
+ }
307
+ /**
308
+ * Creates a new Event Emitter and then spies on it's `emit` method
309
+ *
310
+ * @param {string} alias name you want to use for your cy.spy() alias
311
+ * @returns EventEmitter<T>
312
+ * @example
313
+ * import { StepperComponent } from './stepper.component'
314
+ * import { mount, createOutputSpy } from '@cypress/angular'
315
+ *
316
+ * it('Has spy', () => {
317
+ * mount(StepperComponent, { componentProperties: { change: createOutputSpy('changeSpy') } })
318
+ * cy.get('[data-cy=increment]').click()
319
+ * cy.get('@changeSpy').should('have.been.called')
320
+ * })
321
+ */
322
+ const createOutputSpy = (alias) => {
323
+ const emitter = new EventEmitter();
324
+ cy.spy(emitter, 'emit').as(alias);
325
+ return emitter;
326
+ };
327
+ // Only needs to run once, we reset before each test
328
+ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), {
329
+ teardown: { destroyAfterEach: false },
330
+ });
331
+ setupHooks(cleanup);
332
+
333
+ export { CypressTestComponentRenderer, createOutputSpy, mount };
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@cypress/angular",
3
+ "version": "0.0.0-development",
4
+ "description": "Test Angular Components using Cypress",
5
+ "main": "dist/index.js",
6
+ "scripts": {
7
+ "prebuild": "rimraf dist",
8
+ "build": "rollup -c rollup.config.mjs",
9
+ "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
10
+ "check-ts": "tsc --noEmit",
11
+ "lint": "eslint --ext .js,.ts,.json, ."
12
+ },
13
+ "dependencies": {},
14
+ "devDependencies": {
15
+ "@angular/common": "^14.2.0",
16
+ "@angular/core": "^14.2.0",
17
+ "@angular/platform-browser-dynamic": "^14.2.0",
18
+ "@cypress/mount-utils": "0.0.0-development",
19
+ "typescript": "^4.7.4",
20
+ "zone.js": "~0.11.4"
21
+ },
22
+ "peerDependencies": {
23
+ "@angular/common": ">=13",
24
+ "@angular/core": ">=13",
25
+ "@angular/platform-browser-dynamic": ">=13",
26
+ "zone.js": ">=0.11.0"
27
+ },
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "types": "dist/index.d.ts",
32
+ "license": "MIT",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/cypress-io/cypress.git"
36
+ },
37
+ "homepage": "https://github.com/cypress-io/cypress/blob/develop/npm/angular/#readme",
38
+ "author": "Jordan Powell",
39
+ "bugs": "https://github.com/cypress-io/cypress/issues/new?assignees=&labels=npm%3A%20%40cypress%2Fangular&template=1-bug-report.md&title=",
40
+ "keywords": [
41
+ "angular",
42
+ "cypress",
43
+ "cypress-io",
44
+ "test",
45
+ "testing"
46
+ ],
47
+ "contributors": [
48
+ {
49
+ "name": "Jordan Powell",
50
+ "social": "@jordanpowell88"
51
+ },
52
+ {
53
+ "name": "Zach Williams",
54
+ "social": "@ZachJW34"
55
+ }
56
+ ],
57
+ "module": "dist/index.js",
58
+ "publishConfig": {
59
+ "access": "public"
60
+ },
61
+ "nx": {
62
+ "targets": {
63
+ "build": {
64
+ "outputs": [
65
+ "{workspaceRoot}/cli/angular"
66
+ ]
67
+ }
68
+ }
69
+ },
70
+ "standard": {
71
+ "globals": [
72
+ "Cypress",
73
+ "cy",
74
+ "expect"
75
+ ]
76
+ }
77
+ }
@@ -7,7 +7,6 @@
7
7
  "prebuild": "rimraf dist",
8
8
  "build": "rollup -c rollup.config.mjs",
9
9
  "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
10
- "build-prod": "yarn build",
11
10
  "check-ts": "tsc --noEmit",
12
11
  "lint": "eslint --ext .js,.ts,.json, ."
13
12
  },
@@ -59,6 +58,15 @@
59
58
  "publishConfig": {
60
59
  "access": "public"
61
60
  },
61
+ "nx": {
62
+ "targets": {
63
+ "build": {
64
+ "outputs": [
65
+ "{workspaceRoot}/cli/angular"
66
+ ]
67
+ }
68
+ }
69
+ },
62
70
  "standard": {
63
71
  "globals": [
64
72
  "Cypress",
package/lib/exec/spawn.js CHANGED
@@ -208,7 +208,7 @@ module.exports = {
208
208
  return;
209
209
  }
210
210
 
211
- // if we have a callback and this explictly returns
211
+ // if we have a callback and this explicitly returns
212
212
  // false then bail
213
213
  if (onStderrData && onStderrData(str) === false) {
214
214
  return;
package/lib/util.js CHANGED
@@ -251,7 +251,7 @@ const util = {
251
251
  return tty.isatty(fd);
252
252
  },
253
253
  supportsColor() {
254
- // if we've been explictly told not to support
254
+ // if we've been explicitly told not to support
255
255
  // color then turn this off
256
256
  if (process.env.NO_COLOR) {
257
257
  return false;