cypress 12.6.0 → 12.7.0
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/angular/CHANGELOG.md +7 -0
- package/angular/dist/index.d.ts +6 -2
- package/angular/dist/index.js +30 -2
- package/index.mjs +2 -0
- package/lib/cypress.js +17 -0
- package/package.json +3 -3
- package/types/cypress-npm-api.d.ts +15 -0
- package/types/cypress.d.ts +236 -1
package/angular/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# [@cypress/angular-v2.0.2](https://github.com/cypress-io/cypress/compare/@cypress/angular-v2.0.1...@cypress/angular-v2.0.2) (2023-02-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* mount component in [data-cy-root] ([#25807](https://github.com/cypress-io/cypress/issues/25807)) ([104eef5](https://github.com/cypress-io/cypress/commit/104eef5dfb4b619a748e7ddd59534eadb1044ae7))
|
7
|
+
|
1
8
|
# [@cypress/angular-v2.0.1](https://github.com/cypress-io/cypress/compare/@cypress/angular-v2.0.0...@cypress/angular-v2.0.1) (2022-11-08)
|
2
9
|
|
3
10
|
|
package/angular/dist/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="cypress" />
|
2
2
|
|
3
3
|
import { Type } from '@angular/core';
|
4
|
-
import { TestModuleMetadata, ComponentFixture } from '@angular/core/testing';
|
4
|
+
import { TestModuleMetadata, ComponentFixture, TestComponentRenderer } from '@angular/core/testing';
|
5
5
|
|
6
6
|
/**
|
7
7
|
* Additional module configurations needed while mounting the component, like
|
@@ -72,6 +72,10 @@ declare type MountResponse<T> = {
|
|
72
72
|
*/
|
73
73
|
component: T;
|
74
74
|
};
|
75
|
+
declare class CypressTestComponentRenderer extends TestComponentRenderer {
|
76
|
+
insertRootElement(rootElId: string): void;
|
77
|
+
removeAllRootElements(): void;
|
78
|
+
}
|
75
79
|
/**
|
76
80
|
* Mounts an Angular component inside Cypress browser
|
77
81
|
*
|
@@ -121,4 +125,4 @@ declare function mount<T>(component: Type<T> | string, config?: MountConfig<T>):
|
|
121
125
|
*/
|
122
126
|
declare const createOutputSpy: <T>(alias: string) => any;
|
123
127
|
|
124
|
-
export { MountConfig, MountResponse, createOutputSpy, mount };
|
128
|
+
export { CypressTestComponentRenderer, MountConfig, MountResponse, createOutputSpy, mount };
|
package/angular/dist/index.js
CHANGED
@@ -9,7 +9,7 @@ import 'zone.js';
|
|
9
9
|
import 'zone.js/testing';
|
10
10
|
import { CommonModule } from '@angular/common';
|
11
11
|
import { Injectable, Component, EventEmitter, SimpleChange, ErrorHandler } from '@angular/core';
|
12
|
-
import { getTestBed, TestBed } from '@angular/core/testing';
|
12
|
+
import { getTestBed, TestComponentRenderer, TestBed } from '@angular/core/testing';
|
13
13
|
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
14
14
|
|
15
15
|
/******************************************************************************
|
@@ -46,6 +46,19 @@ function __decorate(decorators, target, key, desc) {
|
|
46
46
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
47
47
|
}
|
48
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
|
+
};
|
49
62
|
/**
|
50
63
|
* Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
|
51
64
|
* @param optionalCallback Callback to be called before the next test runs
|
@@ -143,6 +156,20 @@ function bootstrapModule(component, config) {
|
|
143
156
|
}
|
144
157
|
return testModuleMetaData;
|
145
158
|
}
|
159
|
+
let CypressTestComponentRenderer = class CypressTestComponentRenderer extends TestComponentRenderer {
|
160
|
+
insertRootElement(rootElId) {
|
161
|
+
this.removeAllRootElements();
|
162
|
+
const rootElement = getContainerEl();
|
163
|
+
rootElement.setAttribute('id', rootElId);
|
164
|
+
document.body.appendChild(rootElement);
|
165
|
+
}
|
166
|
+
removeAllRootElements() {
|
167
|
+
getContainerEl().innerHTML = '';
|
168
|
+
}
|
169
|
+
};
|
170
|
+
CypressTestComponentRenderer = __decorate([
|
171
|
+
Injectable()
|
172
|
+
], CypressTestComponentRenderer);
|
146
173
|
/**
|
147
174
|
* Initializes the TestBed
|
148
175
|
*
|
@@ -153,6 +180,7 @@ function bootstrapModule(component, config) {
|
|
153
180
|
function initTestBed(component, config) {
|
154
181
|
const componentFixture = createComponentFixture(component);
|
155
182
|
getTestBed().configureTestingModule(Object.assign({}, bootstrapModule(componentFixture, config)));
|
183
|
+
getTestBed().overrideProvider(TestComponentRenderer, { useValue: new CypressTestComponentRenderer() });
|
156
184
|
return componentFixture;
|
157
185
|
}
|
158
186
|
let WrapperComponent = class WrapperComponent {
|
@@ -302,4 +330,4 @@ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDyn
|
|
302
330
|
});
|
303
331
|
setupHooks(cleanup);
|
304
332
|
|
305
|
-
export { createOutputSpy, mount };
|
333
|
+
export { CypressTestComponentRenderer, createOutputSpy, mount };
|
package/index.mjs
CHANGED
package/lib/cypress.js
CHANGED
@@ -76,6 +76,23 @@ const cypressModuleApi = {
|
|
76
76
|
*/
|
77
77
|
defineConfig(config) {
|
78
78
|
return config;
|
79
|
+
},
|
80
|
+
/**
|
81
|
+
* Provides automatic code completion for Component Frameworks Definitions.
|
82
|
+
* While it's not strictly necessary for Cypress to parse your configuration, we
|
83
|
+
* recommend wrapping your Component Framework Definition object with `defineComponentFramework()`
|
84
|
+
* @example
|
85
|
+
* module.exports = defineComponentFramework({
|
86
|
+
* type: 'cypress-ct-solid-js'
|
87
|
+
* // ...
|
88
|
+
* })
|
89
|
+
*
|
90
|
+
* @see ../types/cypress-npm-api.d.ts
|
91
|
+
* @param {Cypress.ThirdPartyComponentFrameworkDefinition} config
|
92
|
+
* @returns {Cypress.ThirdPartyComponentFrameworkDefinition} the configuration passed in parameter
|
93
|
+
*/
|
94
|
+
defineComponentFramework(config) {
|
95
|
+
return config;
|
79
96
|
}
|
80
97
|
};
|
81
98
|
module.exports = cypressModuleApi;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cypress",
|
3
|
-
"version": "12.
|
3
|
+
"version": "12.7.0",
|
4
4
|
"main": "index.js",
|
5
5
|
"scripts": {
|
6
6
|
"postinstall": "node index.js --exec install",
|
@@ -118,8 +118,8 @@
|
|
118
118
|
},
|
119
119
|
"buildInfo": {
|
120
120
|
"commitBranch": "develop",
|
121
|
-
"commitSha": "
|
122
|
-
"commitDate": "2023-02-
|
121
|
+
"commitSha": "0cdd8d195f9660f1c6bb357b5fbe1ec32b16c54b",
|
122
|
+
"commitDate": "2023-02-24T22:33:04.000Z",
|
123
123
|
"stable": true
|
124
124
|
},
|
125
125
|
"description": "Cypress is a next generation front end testing tool built for the modern web",
|
@@ -397,6 +397,21 @@ declare module 'cypress' {
|
|
397
397
|
* @returns {Cypress.ConfigOptions} the configuration passed in parameter
|
398
398
|
*/
|
399
399
|
defineConfig<ComponentDevServerOpts = any>(config: Cypress.ConfigOptions<ComponentDevServerOpts>): Cypress.ConfigOptions
|
400
|
+
|
401
|
+
/**
|
402
|
+
* Provides automatic code completion for Component Frameworks Definitions.
|
403
|
+
* While it's not strictly necessary for Cypress to parse your configuration, we
|
404
|
+
* recommend wrapping your Component Framework Definition object with `defineComponentFramework()`
|
405
|
+
* @example
|
406
|
+
* module.exports = defineComponentFramework({
|
407
|
+
* type: 'cypress-ct-solid-js'
|
408
|
+
* })
|
409
|
+
*
|
410
|
+
* @see ../types/cypress-npm-api.d.ts
|
411
|
+
* @param {Cypress.ThirdPartyComponentFrameworkDefinition} config
|
412
|
+
* @returns {Cypress.ThirdPartyComponentFrameworkDefinition} the configuration passed in parameter
|
413
|
+
*/
|
414
|
+
defineComponentFramework(config: Cypress.ThirdPartyComponentFrameworkDefinition): Cypress.ThirdPartyComponentFrameworkDefinition
|
400
415
|
}
|
401
416
|
|
402
417
|
// export Cypress NPM module interface
|
package/types/cypress.d.ts
CHANGED
@@ -1816,9 +1816,21 @@ declare namespace Cypress {
|
|
1816
1816
|
*
|
1817
1817
|
* @see https://on.cypress.io/reload
|
1818
1818
|
* @example
|
1819
|
+
* cy.visit('http://localhost:3000/admin')
|
1819
1820
|
* cy.reload()
|
1820
1821
|
*/
|
1821
|
-
reload(
|
1822
|
+
reload(): Chainable<AUTWindow>
|
1823
|
+
/**
|
1824
|
+
* Reload the page.
|
1825
|
+
*
|
1826
|
+
* @see https://on.cypress.io/reload
|
1827
|
+
* @param {Partial<Loggable & Timeoutable>} options Pass in an options object to modify the default behavior of cy.reload()
|
1828
|
+
* @example
|
1829
|
+
* // Reload the page, do not log it in the command log and timeout after 15s
|
1830
|
+
* cy.visit('http://localhost:3000/admin')
|
1831
|
+
* cy.reload({log: false, timeout: 15000})
|
1832
|
+
*/
|
1833
|
+
reload(options: Partial<Loggable & Timeoutable>): Chainable<AUTWindow>
|
1822
1834
|
/**
|
1823
1835
|
* Reload the page without cache
|
1824
1836
|
*
|
@@ -1830,6 +1842,18 @@ declare namespace Cypress {
|
|
1830
1842
|
* cy.reload(true)
|
1831
1843
|
*/
|
1832
1844
|
reload(forceReload: boolean): Chainable<AUTWindow>
|
1845
|
+
/**
|
1846
|
+
* Reload the page without cache and with log and timeout options
|
1847
|
+
*
|
1848
|
+
* @see https://on.cypress.io/reload
|
1849
|
+
* @param {Boolean} forceReload Whether to reload the current page without using the cache. true forces the reload without cache.
|
1850
|
+
* @param {Partial<Loggable & Timeoutable>} options Pass in an options object to modify the default behavior of cy.reload()
|
1851
|
+
* @example
|
1852
|
+
* // Reload the page without using the cache, do not log it in the command log and timeout after 15s
|
1853
|
+
* cy.visit('http://localhost:3000/admin')
|
1854
|
+
* cy.reload(true, {log: false, timeout: 15000})
|
1855
|
+
*/
|
1856
|
+
reload(forceReload: boolean, options: Partial<Loggable & Timeoutable>): Chainable<AUTWindow>
|
1833
1857
|
|
1834
1858
|
/**
|
1835
1859
|
* Make an HTTP GET request.
|
@@ -3259,6 +3283,179 @@ declare namespace Cypress {
|
|
3259
3283
|
|
3260
3284
|
type PickConfigOpt<T> = T extends keyof DefineDevServerConfig ? DefineDevServerConfig[T] : any
|
3261
3285
|
|
3286
|
+
interface DependencyToInstall {
|
3287
|
+
dependency: CypressComponentDependency
|
3288
|
+
satisfied: boolean
|
3289
|
+
loc: string | null
|
3290
|
+
detectedVersion: string | null
|
3291
|
+
}
|
3292
|
+
|
3293
|
+
interface CypressComponentDependency {
|
3294
|
+
/**
|
3295
|
+
* Unique idenitifer.
|
3296
|
+
* @example 'reactscripts'
|
3297
|
+
*/
|
3298
|
+
type: string
|
3299
|
+
|
3300
|
+
/**
|
3301
|
+
* Name to display in the user interface.
|
3302
|
+
* @example "React Scripts"
|
3303
|
+
*/
|
3304
|
+
name: string
|
3305
|
+
|
3306
|
+
/**
|
3307
|
+
* Package name on npm.
|
3308
|
+
* @example react-scripts
|
3309
|
+
*/
|
3310
|
+
package: string
|
3311
|
+
|
3312
|
+
/**
|
3313
|
+
* Code to run when installing. Version is optional.
|
3314
|
+
*
|
3315
|
+
* Should be <package_name>@<version>.
|
3316
|
+
*
|
3317
|
+
* @example `react`
|
3318
|
+
* @example `react@18`
|
3319
|
+
* @example `react-scripts`
|
3320
|
+
*/
|
3321
|
+
installer: string
|
3322
|
+
|
3323
|
+
/**
|
3324
|
+
* Description shown in UI. It is recommended to use the same one the package uses on npm.
|
3325
|
+
* @example 'Create React apps with no build configuration'
|
3326
|
+
*/
|
3327
|
+
description: string
|
3328
|
+
|
3329
|
+
/**
|
3330
|
+
* Minimum version supported. Should conform to Semantic Versioning as used in `package.json`.
|
3331
|
+
* @see https://docs.npmjs.com/cli/v9/configuring-npm/package-json#dependencies
|
3332
|
+
* @example '^=4.0.0 || ^=5.0.0'
|
3333
|
+
* @example '^2.0.0'
|
3334
|
+
*/
|
3335
|
+
minVersion: string
|
3336
|
+
}
|
3337
|
+
|
3338
|
+
interface ResolvedComponentFrameworkDefinition {
|
3339
|
+
/**
|
3340
|
+
* A semantic, unique identifier.
|
3341
|
+
* Must begin with `cypress-ct-` or `@org/cypress-ct-` for third party implementations.
|
3342
|
+
* @example 'reactscripts'
|
3343
|
+
* @example 'nextjs'
|
3344
|
+
* @example 'cypress-ct-solid-js'
|
3345
|
+
*/
|
3346
|
+
type: string
|
3347
|
+
|
3348
|
+
/**
|
3349
|
+
* Used as the flag for `getPreset` for meta framworks, such as finding the webpack config for CRA, Angular, etc.
|
3350
|
+
* It is also the name of the string added to `cypress.config`
|
3351
|
+
*
|
3352
|
+
* @example
|
3353
|
+
* export default {
|
3354
|
+
* component: {
|
3355
|
+
* devServer: {
|
3356
|
+
* framework: 'create-react-app' // can be 'next', 'create-react-app', etc etc.
|
3357
|
+
* }
|
3358
|
+
* }
|
3359
|
+
* }
|
3360
|
+
*/
|
3361
|
+
configFramework: string
|
3362
|
+
|
3363
|
+
/**
|
3364
|
+
* Library (React, Vue) or template (aka "meta framework") (CRA, Next.js, Angular)
|
3365
|
+
*/
|
3366
|
+
category: 'library' | 'template'
|
3367
|
+
|
3368
|
+
/**
|
3369
|
+
* Name displayed in Launchpad when doing initial setup.
|
3370
|
+
* @example 'Solid.js'
|
3371
|
+
* @example 'Create React App'
|
3372
|
+
*/
|
3373
|
+
name: string
|
3374
|
+
|
3375
|
+
/**
|
3376
|
+
* Supported bundlers.
|
3377
|
+
*/
|
3378
|
+
supportedBundlers: Array<'webpack' | 'vite'>
|
3379
|
+
|
3380
|
+
/**
|
3381
|
+
* Used to attempt to automatically select the correct framework/bundler from the dropdown.
|
3382
|
+
*
|
3383
|
+
* @example
|
3384
|
+
* const SOLID_DETECTOR: Dependency = {
|
3385
|
+
* type: 'solid',
|
3386
|
+
* name: 'Solid.js',
|
3387
|
+
* package: 'solid-js',
|
3388
|
+
* installer: 'solid-js',
|
3389
|
+
* description: 'Solid is a declarative JavaScript library for creating user interfaces',
|
3390
|
+
* minVersion: '^1.0.0',
|
3391
|
+
* }
|
3392
|
+
*/
|
3393
|
+
detectors: CypressComponentDependency[]
|
3394
|
+
|
3395
|
+
/**
|
3396
|
+
* Array of required dependencies. This could be the bundler and JavaScript library.
|
3397
|
+
*/
|
3398
|
+
dependencies: (bundler: 'webpack' | 'vite', projectPath: string) => Promise<DependencyToInstall[]>
|
3399
|
+
|
3400
|
+
/**
|
3401
|
+
* This is used interally by Cypress for the "Create From Component" feature.
|
3402
|
+
*/
|
3403
|
+
codeGenFramework?: 'react' | 'vue' | 'svelte' | 'angular'
|
3404
|
+
|
3405
|
+
/**
|
3406
|
+
* This is used interally by Cypress for the "Create From Component" feature.
|
3407
|
+
* @example '*.{js,jsx,tsx}'
|
3408
|
+
*/
|
3409
|
+
glob?: string
|
3410
|
+
|
3411
|
+
/**
|
3412
|
+
* This is the path to get mount, eg `import { mount } from <mount_module>,
|
3413
|
+
* @example: `cypress-ct-solidjs/src/mount`
|
3414
|
+
*/
|
3415
|
+
mountModule: (projectPath: string) => Promise<string>
|
3416
|
+
|
3417
|
+
/**
|
3418
|
+
* Support status. Internally alpha | beta | full.
|
3419
|
+
* Community integrations are "community".
|
3420
|
+
*/
|
3421
|
+
supportStatus: 'alpha' | 'beta' | 'full' | 'community'
|
3422
|
+
|
3423
|
+
/**
|
3424
|
+
* Function returning string for used for the component-index.html file.
|
3425
|
+
* Cypress provides a default if one isn't specified for third party integrations.
|
3426
|
+
*/
|
3427
|
+
componentIndexHtml?: () => string
|
3428
|
+
|
3429
|
+
/**
|
3430
|
+
* Used for the Create From Comopnent feature.
|
3431
|
+
* This is currently not supported for third party frameworks.
|
3432
|
+
*/
|
3433
|
+
specPattern?: '**/*.cy.ts'
|
3434
|
+
}
|
3435
|
+
|
3436
|
+
type ComponentFrameworkDefinition = Omit<ResolvedComponentFrameworkDefinition, 'dependencies'> & {
|
3437
|
+
dependencies: (bundler: 'webpack' | 'vite') => CypressComponentDependency[]
|
3438
|
+
}
|
3439
|
+
|
3440
|
+
/**
|
3441
|
+
* Certain properties are not supported for third party frameworks right now,
|
3442
|
+
* such as ones related to the "Create From" feature. This is a subset of
|
3443
|
+
* properties that are exposed for public usage.
|
3444
|
+
*/
|
3445
|
+
|
3446
|
+
type ThirdPartyComponentFrameworkDefinition = Pick<ComponentFrameworkDefinition, 'type' | 'name' | 'supportedBundlers' | 'detectors' | 'dependencies'> & {
|
3447
|
+
/**
|
3448
|
+
* @example `cypress-ct-${string} for third parties. Any string is valid internally.
|
3449
|
+
*/
|
3450
|
+
type: string
|
3451
|
+
|
3452
|
+
/**
|
3453
|
+
* Raw SVG icon that will be displayed in the Project Setup Wizard. Used for third parties that
|
3454
|
+
* want to render a custom icon.
|
3455
|
+
*/
|
3456
|
+
icon?: string
|
3457
|
+
}
|
3458
|
+
|
3262
3459
|
interface AngularDevServerProjectConfig {
|
3263
3460
|
root: string
|
3264
3461
|
sourceRoot: string
|
@@ -3545,12 +3742,49 @@ declare namespace Cypress {
|
|
3545
3742
|
action: 'select' | 'drag-drop'
|
3546
3743
|
}
|
3547
3744
|
|
3745
|
+
/**
|
3746
|
+
* Options that control how the `cy.setCookie` command
|
3747
|
+
* sets the cookie in the browser.
|
3748
|
+
* @see https://on.cypress.io/setcookie#Arguments
|
3749
|
+
*/
|
3548
3750
|
interface SetCookieOptions extends Loggable, Timeoutable {
|
3751
|
+
/**
|
3752
|
+
* The path of the cookie.
|
3753
|
+
* @default "/"
|
3754
|
+
*/
|
3549
3755
|
path: string
|
3756
|
+
/**
|
3757
|
+
* Represents the domain the cookie belongs to (e.g. "docs.cypress.io", "github.com").
|
3758
|
+
* @default location.hostname
|
3759
|
+
*/
|
3550
3760
|
domain: string
|
3761
|
+
/**
|
3762
|
+
* Whether a cookie's scope is limited to secure channels, such as HTTPS.
|
3763
|
+
* @default false
|
3764
|
+
*/
|
3551
3765
|
secure: boolean
|
3766
|
+
/**
|
3767
|
+
* Whether or not the cookie is HttpOnly, meaning the cookie is inaccessible to client-side scripts.
|
3768
|
+
* The Cypress cookie API has access to HttpOnly cookies.
|
3769
|
+
* @default false
|
3770
|
+
*/
|
3552
3771
|
httpOnly: boolean
|
3772
|
+
/**
|
3773
|
+
* Whether or not the cookie is a host-only cookie, meaning the request's host must exactly match the domain of the cookie.
|
3774
|
+
* @default false
|
3775
|
+
*/
|
3776
|
+
hostOnly: boolean
|
3777
|
+
/**
|
3778
|
+
* The cookie's expiry time, specified in seconds since Unix Epoch.
|
3779
|
+
* The default is expiry is 20 years in the future from current time.
|
3780
|
+
*/
|
3553
3781
|
expiry: number
|
3782
|
+
/**
|
3783
|
+
* The cookie's SameSite value. If set, should be one of `lax`, `strict`, or `no_restriction`.
|
3784
|
+
* `no_restriction` is the equivalent of `SameSite=None`. Pass `undefined` to use the browser's default.
|
3785
|
+
* Note: `no_restriction` can only be used if the secure flag is set to `true`.
|
3786
|
+
* @default undefined
|
3787
|
+
*/
|
3554
3788
|
sameSite: SameSiteStatus
|
3555
3789
|
}
|
3556
3790
|
|
@@ -6080,6 +6314,7 @@ declare namespace Cypress {
|
|
6080
6314
|
value: string
|
6081
6315
|
path: string
|
6082
6316
|
domain: string
|
6317
|
+
hostOnly?: boolean
|
6083
6318
|
httpOnly: boolean
|
6084
6319
|
secure: boolean
|
6085
6320
|
expiry?: number
|