cypress 4.12.1 → 5.3.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.
@@ -0,0 +1,257 @@
1
+ /**
2
+ * HTTP request/response types.
3
+ */
4
+ export namespace CyHttpMessages {
5
+ interface BaseMessage {
6
+ // as much stuff from `incomingmessage` as makes sense to serialize and send
7
+ body?: any
8
+ headers: { [key: string]: string }
9
+ url: string
10
+ method?: string
11
+ httpVersion?: string
12
+ }
13
+
14
+ export type IncomingResponse = BaseMessage & {
15
+ statusCode: number
16
+ statusMessage: string
17
+ }
18
+
19
+ export type IncomingHttpResponse = IncomingResponse & {
20
+ /**
21
+ * Continue the HTTP response, merging the supplied values with the real response.
22
+ */
23
+ send(status: number, body?: string | number | object, headers?: { [key: string]: string }): void
24
+ send(body: string | object, headers?: { [key: string]: string }): void
25
+ send(staticResponse: StaticResponse): void
26
+ /**
27
+ * Continue the HTTP response to the browser, including any modifications made to `res`.
28
+ */
29
+ send(): void
30
+ /**
31
+ * Wait for `delayMs` milliseconds before sending the response to the client.
32
+ */
33
+ delay: (delayMs: number) => IncomingHttpResponse
34
+ /**
35
+ * Serve the response at `throttleKbps` kilobytes per second.
36
+ */
37
+ throttle: (throttleKbps: number) => IncomingHttpResponse
38
+ }
39
+
40
+ export type IncomingRequest = BaseMessage & {
41
+ responseTimeout?: number
42
+ /**
43
+ * Set if redirects should be followed when this request is made. By default, requests will
44
+ * not follow redirects before yielding the response (the 3xx redirect is yielded)
45
+ */
46
+ followRedirect?: boolean
47
+ }
48
+
49
+ export interface IncomingHttpRequest extends IncomingRequest {
50
+ destroy(): void
51
+ reply(interceptor?: StaticResponse | HttpResponseInterceptor): void
52
+ reply(body: string | object, headers?: { [key: string]: string }): void
53
+ reply(status: number, body?: string | object, headers?: { [key: string]: string }): void
54
+ redirect(location: string, statusCode: number): void
55
+ }
56
+ }
57
+
58
+ export interface DictMatcher<T> {
59
+ [key: string]: T
60
+ }
61
+
62
+ /**
63
+ * Matches a string using glob (`*`) matching.
64
+ */
65
+ export type GlobPattern = string
66
+
67
+ export type HttpRequestInterceptor = (req: CyHttpMessages.IncomingHttpRequest) => void | Promise<void>
68
+
69
+ export type HttpResponseInterceptor = (res: CyHttpMessages.IncomingHttpResponse, send?: () => void) => void | Promise<void>
70
+
71
+ /**
72
+ * Matches a single number or any of an array of acceptable numbers.
73
+ */
74
+ export type NumberMatcher = number | number[]
75
+
76
+ /**
77
+ * Request/response cycle.
78
+ */
79
+ export interface Request {
80
+ id: string
81
+ /* @internal */
82
+ log: any
83
+ request: CyHttpMessages.IncomingRequest
84
+ /**
85
+ * Was `cy.wait()` used to wait on this request?
86
+ * @internal
87
+ */
88
+ requestWaited: boolean
89
+ response?: CyHttpMessages.IncomingResponse
90
+ /* @internal */
91
+ responseHandler?: HttpResponseInterceptor
92
+ /**
93
+ * Was `cy.wait()` used to wait on the response to this request?
94
+ * @internal
95
+ */
96
+ responseWaited: boolean
97
+ /* @internal */
98
+ state: RequestState
99
+ }
100
+
101
+ export type RequestState =
102
+ 'Received' |
103
+ 'Intercepted' |
104
+ 'ResponseReceived' |
105
+ 'ResponseIntercepted' |
106
+ 'Complete' |
107
+ 'Errored'
108
+
109
+ export interface Route {
110
+ alias?: string
111
+ log: any
112
+ options: RouteMatcherOptions
113
+ handler: RouteHandler
114
+ hitCount: number
115
+ requests: { [key: string]: Request }
116
+ }
117
+
118
+ export interface RouteMap { [key: string]: Route }
119
+
120
+ /**
121
+ * A `RouteMatcher` describes a filter for HTTP requests.
122
+ */
123
+ export type RouteMatcher = StringMatcher | RouteMatcherOptions
124
+
125
+ export interface RouteMatcherCompatOptions {
126
+ response?: string | object
127
+ }
128
+
129
+ export type RouteMatcherOptions = RouteMatcherOptionsGeneric<StringMatcher>
130
+
131
+ export interface RouteMatcherOptionsGeneric<S> extends RouteMatcherCompatOptions {
132
+ /**
133
+ * Match HTTP basic authentication.
134
+ */
135
+ auth?: { username: S, password: S }
136
+ /**
137
+ * Match client request headers.
138
+ */
139
+ headers?: DictMatcher<S>
140
+ /**
141
+ * Match based on requested hostname.
142
+ */
143
+ hostname?: S
144
+ /**
145
+ * Match requests served via HTTPS only.
146
+ */
147
+ https?: boolean
148
+ /**
149
+ * @default 'GET'
150
+ */
151
+ method?: S
152
+ /**
153
+ * Match on request path after the hostname, including query params.
154
+ */
155
+ path?: S
156
+ /**
157
+ * Matches like `path`, but without query params.
158
+ */
159
+ pathname?: S
160
+ /**
161
+ * Match based on requested port.
162
+ */
163
+ port?: NumberMatcher
164
+ /**
165
+ * Match on parsed querystring parameters.
166
+ */
167
+ query?: DictMatcher<S>
168
+ /**
169
+ * Match based on full request URL.
170
+ */
171
+ url?: S
172
+ }
173
+
174
+ export type RouteHandlerController = HttpRequestInterceptor
175
+
176
+ export type RouteHandler = string | StaticResponse | RouteHandlerController | object
177
+
178
+ /**
179
+ * Describes a response that will be sent back to the browser to fulfill the request.
180
+ */
181
+ export type StaticResponse = GenericStaticResponse<string, string | object> & {
182
+ /**
183
+ * If set, `delayMs` will pass before the response is sent.
184
+ */
185
+ delayMs?: number
186
+ }
187
+
188
+ export interface GenericStaticResponse<Fixture, Body> {
189
+ /**
190
+ * If set, serve a fixture as the response body.
191
+ */
192
+ fixture?: Fixture
193
+ /**
194
+ * If set, serve a static string/JSON object as the response body.
195
+ */
196
+ body?: Body
197
+ /**
198
+ * @default {}
199
+ */
200
+ headers?: { [key: string]: string }
201
+ /**
202
+ * @default 200
203
+ */
204
+ statusCode?: number
205
+ /**
206
+ * If `forceNetworkError` is truthy, Cypress will destroy the connection to the browser and send no response. Useful for simulating a server that is not reachable. Must not be set in combination with other options.
207
+ */
208
+ forceNetworkError?: boolean
209
+ /**
210
+ * If set, the `body` will be sent at `throttleKbps` kbps.
211
+ */
212
+ throttleKbps?: number
213
+ }
214
+
215
+ /**
216
+ * Either a `GlobPattern` string or a `RegExp`.
217
+ */
218
+ export type StringMatcher = GlobPattern | RegExp
219
+
220
+ declare global {
221
+ namespace Cypress {
222
+ interface Chainable<Subject = any> {
223
+ /**
224
+ * Use `cy.route2()` to stub and intercept HTTP requests and responses.
225
+ *
226
+ * Note: this command is only available if you have set the `experimentalNetworkStubbing`
227
+ * configuration option to `true`.
228
+ *
229
+ * @see https://on.cypress.io/route2
230
+ * @example
231
+ * cy.route2('https://localhost:7777/users', [{id: 1, name: 'Pat'}])
232
+ * @example
233
+ * cy.route2('https://localhost:7777/protected-endpoint', (req) => {
234
+ * req.headers['authorization'] = 'basic fooabc123'
235
+ * })
236
+ * @example
237
+ * cy.route2('https://localhost:7777/some-response', (req) => {
238
+ * req.reply(res => {
239
+ * res.body = 'some new body'
240
+ * })
241
+ * })
242
+ */
243
+ route2(url: RouteMatcher, response?: RouteHandler): Chainable<null>
244
+ /**
245
+ * Use `cy.route2()` to stub and intercept HTTP requests and responses.
246
+ *
247
+ * Note: this command is only available if you have set the `experimentalNetworkStubbing`
248
+ * configuration option to `true`.
249
+ *
250
+ * @see https://on.cypress.io/route2
251
+ * @example
252
+ * cy.route2('GET', 'http://foo.com/fruits', ['apple', 'banana', 'cherry'])
253
+ */
254
+ route2(method: string, url: RouteMatcher, response?: RouteHandler): Chainable<null>
255
+ }
256
+ }
257
+ }
@@ -1,97 +0,0 @@
1
- // Type definitions for blob-util 1.3
2
- // Project: https://github.com/nolanlawson/blob-util#readme
3
- // Definitions by: Max Battcher <https://github.com/WorldMaker>
4
- // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5
- // TypeScript Version: 2.1
6
-
7
- /**
8
- * Shim for new Blob() to support older browsers that use the deprecated BlobBuilder API.
9
- *
10
- * @param parts content of the Blob
11
- * @param options usually just `{ type: mimeType }`
12
- */
13
- export function createBlob(parts: any[], options?: { type: string }): Blob;
14
-
15
- /**
16
- * Shim for URL.createObjectURL() to support browsers that only have the prefixed webkitURL (e.g. Android <4.4).
17
- */
18
- export function createObjectURL(blob: Blob): string;
19
-
20
- /**
21
- * Shim for URL.revokeObjectURL() to support browsers that only have the prefixed webkitURL (e.g. Android <4.4).
22
- */
23
- export function revokeObjectURL(url: string): void;
24
-
25
- /**
26
- * Convert a Blob to a binary string.
27
- */
28
- export function blobToBinaryString(blob: Blob): Promise<string>;
29
-
30
- /**
31
- * Convert a binary string to a Blob.
32
- * @param type the content type
33
- */
34
- export function binaryStringToBlob(binary: string, type?: string): Promise<Blob>;
35
-
36
- /**
37
- * Convert a Blob to a base-64 string.
38
- */
39
- export function blobToBase64String(blob: Blob): Promise<string>;
40
-
41
- /**
42
- * Convert a base-64 string to a Blob.
43
- * @param type the content type
44
- */
45
- export function base64StringToBlob(base64: string, type?: string): Promise<Blob>;
46
-
47
- /**
48
- * Convert a data URL string (e.g. `'data:image/png;base64,iVBORw0KG...'`) to a Blob.
49
- */
50
- export function dataURLToBlob(dataURL: string): Promise<Blob>;
51
-
52
- /**
53
- * Convert a Blob to a data URL string (e.g. `'data:image/png;base64,iVBORw0KG...'`).
54
- */
55
- export function blobToDataURL(blob: Blob): Promise<string>;
56
-
57
- /**
58
- * Convert an image's src URL to a data URL by loading the image and painting it to a canvas.
59
- *
60
- * Note: this will coerce the image to the desired content type, and it will only paint the first frame of an animated GIF.
61
- *
62
- * @param type the content type (optional, defaults to 'image/png')
63
- * @param crossOrigin for CORS-enabled images, set this to 'Anonymous' to avoid "tainted canvas" errors
64
- * @param quality a number between 0 and 1 indicating image quality if the requested type is 'image/jpeg' or 'image/webp'
65
- */
66
- export function imgSrcToDataURL(src: string, type?: string, crossOrigin?: string, quality?: number): Promise<string>;
67
-
68
- /**
69
- * Convert a canvas to a Blob.
70
- *
71
- * @param type the content type (optional, defaults to 'image/png')
72
- * @param quality a number between 0 and 1 indicating image quality if the requested type is 'image/jpeg' or 'image/webp'
73
- */
74
- export function canvasToBlob(canvas: HTMLCanvasElement, type?: string, quality?: number): Promise<Blob>;
75
-
76
- /**
77
- * Convert an image's src URL to a Blob by loading the image and painting it to a canvas.
78
- *
79
- * Note: this will coerce the image to the desired content type, and it will only paint the first frame of an animated GIF.
80
- *
81
- * @param type the content type (optional, defaults to 'image/png')
82
- * @param crossOrigin for CORS-enabled images, set this to 'Anonymous' to avoid "tainted canvas" errors
83
- * @param quality a number between 0 and 1 indicating image quality if the requested type is 'image/jpeg' or 'image/webp'
84
- */
85
- export function imgSrcToBlob(src: string, type?: string, crossOrigin?: string, quality?: number): Promise<Blob>;
86
-
87
- /**
88
- * Convert an ArrayBuffer to a Blob.
89
- *
90
- * @param type the content type
91
- */
92
- export function arrayBufferToBlob(arrayBuff: ArrayBuffer, type?: string): Promise<Blob>;
93
-
94
- /**
95
- * Convert a Blob to an ArrayBuffer.
96
- */
97
- export function blobToArrayBuffer(blob: Blob): Promise<ArrayBuffer>;