@taiga-ui/testing 3.15.0 → 3.16.0-dev.main-e7166ca

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('cypress-image-snapshot/command')) :
3
- typeof define === 'function' && define.amd ? define('@taiga-ui/testing/cypress', ['exports', 'cypress-image-snapshot/command'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["taiga-ui"] = global["taiga-ui"] || {}, global["taiga-ui"].testing = global["taiga-ui"].testing || {}, global["taiga-ui"].testing.cypress = {}), global.command));
5
- })(this, (function (exports, command) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@taiga-ui/cdk/utils/miscellaneous'), require('cypress-image-snapshot/command')) :
3
+ typeof define === 'function' && define.amd ? define('@taiga-ui/testing/cypress', ['exports', '@taiga-ui/cdk/utils/miscellaneous', 'cypress-image-snapshot/command'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["taiga-ui"] = global["taiga-ui"] || {}, global["taiga-ui"].testing = global["taiga-ui"].testing || {}, global["taiga-ui"].testing.cypress = {}), global.miscellaneous, global.command));
5
+ })(this, (function (exports, miscellaneous, command) { 'use strict';
6
6
 
7
7
  /// <reference types="cypress" />
8
8
  /// <reference types="node" />
@@ -100,8 +100,8 @@
100
100
  var matchSnapshotFn = command.matchImageSnapshotCommand(options);
101
101
  Cypress.Commands.add("matchImageSnapshot", { prevSubject: ["optional", "element", "window", "document"] }, function (prevSubject, nameOrOptions, options) {
102
102
  var _a;
103
- var name = typeof nameOrOptions === "string" ? nameOrOptions : undefined;
104
- var overloadedOptions = typeof nameOrOptions === "object" && !!nameOrOptions
103
+ var name = miscellaneous.tuiIsString(nameOrOptions) ? nameOrOptions : undefined;
104
+ var overloadedOptions = miscellaneous.tuiIsObject(nameOrOptions)
105
105
  ? nameOrOptions
106
106
  : options;
107
107
  tuiWaitAllImgInside(prevSubject, (_a = overloadedOptions === null || overloadedOptions === void 0 ? void 0 : overloadedOptions.waitAllImages) !== null && _a !== void 0 ? _a : true);
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-testing-cypress.umd.js","sources":["../../../projects/testing/cypress/assertions/be-in-viewport.ts","../../../projects/testing/cypress/commands/wait-all-img-inside.command.ts","../../../projects/testing/cypress/snapshot/command.ts","../../../projects/testing/cypress/taiga-ui-testing-cypress.ts"],"sourcesContent":["/// <reference types=\"cypress\" />\n/// <reference types=\"node\" />\n\n/**\n * Check if element is inside viewport\n *\n * @note WARNING! `.should('be.visible')` doesn't not check if element is inside viewport\n * @see https://github.com/cypress-io/cypress/issues/17483\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-342187174\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-657583222\n * @example\n ```ts\n cy.get('#test').should('be.inViewport');\n ```\n * */\nexport const tuiBeInViewportAssertion: Chai.ChaiPlugin = _chai => {\n chai.Assertion.addMethod(`inViewport`, function () {\n const subject = this._obj;\n const {top, bottom} = subject[0].getBoundingClientRect();\n\n const viewportHeight: number =\n // @ts-ignore TS2339: Property 'state' does not exist on type 'cy & CyEventEmitter'.\n Cypress.$(cy.state(`window`)).height() || 0;\n\n const subjectOverlapsAllViewport = top < 0 && bottom > viewportHeight;\n const topBorderIsVisible = top >= 0 && top < viewportHeight;\n const bottomBorderIsVisible = bottom >= 0 && bottom < viewportHeight;\n\n this.assert(\n subjectOverlapsAllViewport || topBorderIsVisible || bottomBorderIsVisible,\n `expected #{this} to be in viewport`,\n `expected #{this} to not be in viewport`,\n subject,\n );\n });\n};\n","/// <reference types=\"cypress\" />\n\nexport const tuiWaitAllImgInside = (\n prevSubject: Cypress.PrevSubjectMap<void>[Cypress.PrevSubject],\n enabled: boolean = true,\n): Cypress.Chainable<JQuery<HTMLBodyElement>> | Cypress.Chainable<JQuery> => {\n const target =\n prevSubject && Cypress.dom.isJquery(prevSubject)\n ? cy.wrap(prevSubject, {log: false})\n : cy.get(`body`, {log: false});\n\n target.then($target => {\n const img = $target.find(`img`);\n\n if (img.length && enabled) {\n const log = Cypress.log({\n displayName: `Wait all images`,\n message: `naturalWidth greaterThan 0`,\n name: `tuiWaitAllImgInside`,\n autoEnd: false,\n consoleProps: () => ({\n prevSubject,\n img,\n }),\n });\n\n cy.wrap($target, {log: false})\n .get(`img`, {log: false})\n .each((img: JQuery<HTMLImageElement>) => {\n const nativeImage = img.get(0);\n const url = nativeImage?.src || nativeImage?.srcset;\n\n if (!url) {\n return;\n }\n\n const offsetParent = img.prop(`offsetParent`);\n\n return cy.window({log: false}).then((win: Window) => {\n const rect = nativeImage.getBoundingClientRect();\n const isInViewport =\n offsetParent &&\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (win.innerHeight ||\n win.document.documentElement.clientHeight) &&\n rect.right <=\n (win.innerWidth ||\n win.document.documentElement.clientWidth);\n\n if (isInViewport) {\n if (url.includes(`base64`)) {\n (expect as any)(\n nativeImage.naturalWidth,\n ).to.be.greaterThan(0);\n } else {\n cy.request({\n url,\n failOnStatusCode: false,\n log: false,\n }).then(resp => {\n if (resp.status === 200) {\n cy.get(img as any, {log: false}).should(\n (el: JQuery<HTMLImageElement>) =>\n (expect as any)(\n el[0].naturalWidth,\n ).to.be.greaterThan(0),\n );\n }\n });\n }\n }\n });\n })\n .then(() => log.end());\n }\n });\n\n return target;\n};\n","/// <reference types=\"cypress\" />\n\nimport {Options} from 'cypress-image-snapshot';\nimport {matchImageSnapshotCommand} from 'cypress-image-snapshot/command';\n\nimport {tuiWaitAllImgInside} from '../commands/wait-all-img-inside.command';\n\ndeclare module 'cypress-image-snapshot/command' {\n function matchImageSnapshotCommand(options: Options): (...args: unknown[]) => void;\n}\n\ninterface TuiSnapshotCommandOptions {\n waitAllImages?: boolean;\n}\n\ndeclare global {\n namespace Cypress {\n interface Chainable {\n matchImageSnapshot(\n name: string,\n options?: Options & TuiSnapshotCommandOptions,\n ): void;\n }\n }\n}\n\nexport function tuiAddMatchImageSnapshotCommand(\n options: Options & TuiSnapshotCommandOptions,\n): void {\n const matchSnapshotFn = matchImageSnapshotCommand(options);\n\n Cypress.Commands.add(\n `matchImageSnapshot`,\n {prevSubject: [`optional`, `element`, `window`, `document`]},\n (\n prevSubject,\n nameOrOptions: string | (Options & TuiSnapshotCommandOptions),\n options?: Options & TuiSnapshotCommandOptions,\n ) => {\n const name = typeof nameOrOptions === `string` ? nameOrOptions : undefined;\n const overloadedOptions =\n typeof nameOrOptions === `object` && !!nameOrOptions\n ? nameOrOptions\n : options;\n\n tuiWaitAllImgInside(prevSubject, overloadedOptions?.waitAllImages ?? true);\n\n matchSnapshotFn(prevSubject, makeScreenshotName(name), overloadedOptions);\n },\n );\n}\n\nfunction makeScreenshotName(name?: string): string {\n return (\n name ??\n Cypress.currentTest.titlePath\n .join(`-`)\n .replace(/\\s|-/g, `.`)\n .replace(/['[\\]`()]/g, ``)\n .toLowerCase()\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["matchImageSnapshotCommand"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-testing-cypress.umd.js","sources":["../../../projects/testing/cypress/assertions/be-in-viewport.ts","../../../projects/testing/cypress/commands/wait-all-img-inside.command.ts","../../../projects/testing/cypress/snapshot/command.ts","../../../projects/testing/cypress/taiga-ui-testing-cypress.ts"],"sourcesContent":["/// <reference types=\"cypress\" />\n/// <reference types=\"node\" />\n\n/**\n * Check if element is inside viewport\n *\n * @note WARNING! `.should('be.visible')` doesn't not check if element is inside viewport\n * @see https://github.com/cypress-io/cypress/issues/17483\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-342187174\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-657583222\n * @example\n ```ts\n cy.get('#test').should('be.inViewport');\n ```\n * */\nexport const tuiBeInViewportAssertion: Chai.ChaiPlugin = _chai => {\n chai.Assertion.addMethod(`inViewport`, function () {\n const subject = this._obj;\n const {top, bottom} = subject[0].getBoundingClientRect();\n\n const viewportHeight: number =\n // @ts-ignore TS2339: Property 'state' does not exist on type 'cy & CyEventEmitter'.\n Cypress.$(cy.state(`window`)).height() || 0;\n\n const subjectOverlapsAllViewport = top < 0 && bottom > viewportHeight;\n const topBorderIsVisible = top >= 0 && top < viewportHeight;\n const bottomBorderIsVisible = bottom >= 0 && bottom < viewportHeight;\n\n this.assert(\n subjectOverlapsAllViewport || topBorderIsVisible || bottomBorderIsVisible,\n `expected #{this} to be in viewport`,\n `expected #{this} to not be in viewport`,\n subject,\n );\n });\n};\n","/// <reference types=\"cypress\" />\n\nexport const tuiWaitAllImgInside = (\n prevSubject: Cypress.PrevSubjectMap<void>[Cypress.PrevSubject],\n enabled: boolean = true,\n): Cypress.Chainable<JQuery<HTMLBodyElement>> | Cypress.Chainable<JQuery> => {\n const target =\n prevSubject && Cypress.dom.isJquery(prevSubject)\n ? cy.wrap(prevSubject, {log: false})\n : cy.get(`body`, {log: false});\n\n target.then($target => {\n const img = $target.find(`img`);\n\n if (img.length && enabled) {\n const log = Cypress.log({\n displayName: `Wait all images`,\n message: `naturalWidth greaterThan 0`,\n name: `tuiWaitAllImgInside`,\n autoEnd: false,\n consoleProps: () => ({\n prevSubject,\n img,\n }),\n });\n\n cy.wrap($target, {log: false})\n .get(`img`, {log: false})\n .each((img: JQuery<HTMLImageElement>) => {\n const nativeImage = img.get(0);\n const url = nativeImage?.src || nativeImage?.srcset;\n\n if (!url) {\n return;\n }\n\n const offsetParent = img.prop(`offsetParent`);\n\n return cy.window({log: false}).then((win: Window) => {\n const rect = nativeImage.getBoundingClientRect();\n const isInViewport =\n offsetParent &&\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (win.innerHeight ||\n win.document.documentElement.clientHeight) &&\n rect.right <=\n (win.innerWidth ||\n win.document.documentElement.clientWidth);\n\n if (isInViewport) {\n if (url.includes(`base64`)) {\n (expect as any)(\n nativeImage.naturalWidth,\n ).to.be.greaterThan(0);\n } else {\n cy.request({\n url,\n failOnStatusCode: false,\n log: false,\n }).then(resp => {\n if (resp.status === 200) {\n cy.get(img as any, {log: false}).should(\n (el: JQuery<HTMLImageElement>) =>\n (expect as any)(\n el[0].naturalWidth,\n ).to.be.greaterThan(0),\n );\n }\n });\n }\n }\n });\n })\n .then(() => log.end());\n }\n });\n\n return target;\n};\n","/// <reference types=\"cypress\" />\n// eslint-disable-next-line @taiga-ui/no-deep-imports\nimport {tuiIsObject, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Options} from 'cypress-image-snapshot';\nimport {matchImageSnapshotCommand} from 'cypress-image-snapshot/command';\n\nimport {tuiWaitAllImgInside} from '../commands/wait-all-img-inside.command';\n\ndeclare module 'cypress-image-snapshot/command' {\n function matchImageSnapshotCommand(options: Options): (...args: unknown[]) => void;\n}\n\ninterface TuiSnapshotCommandOptions {\n waitAllImages?: boolean;\n}\n\ndeclare global {\n namespace Cypress {\n interface Chainable {\n matchImageSnapshot(\n name: string,\n options?: Options & TuiSnapshotCommandOptions,\n ): void;\n }\n }\n}\n\nexport function tuiAddMatchImageSnapshotCommand(\n options: Options & TuiSnapshotCommandOptions,\n): void {\n const matchSnapshotFn = matchImageSnapshotCommand(options);\n\n Cypress.Commands.add(\n `matchImageSnapshot`,\n {prevSubject: [`optional`, `element`, `window`, `document`]},\n (\n prevSubject,\n nameOrOptions: string | (Options & TuiSnapshotCommandOptions),\n options?: Options & TuiSnapshotCommandOptions,\n ) => {\n const name = tuiIsString(nameOrOptions) ? nameOrOptions : undefined;\n const overloadedOptions = tuiIsObject(nameOrOptions)\n ? nameOrOptions\n : options;\n\n tuiWaitAllImgInside(prevSubject, overloadedOptions?.waitAllImages ?? true);\n\n matchSnapshotFn(prevSubject, makeScreenshotName(name), overloadedOptions);\n },\n );\n}\n\nfunction makeScreenshotName(name?: string): string {\n return (\n name ??\n Cypress.currentTest.titlePath\n .join(`-`)\n .replace(/\\s|-/g, `.`)\n .replace(/['[\\]`()]/g, ``)\n .toLowerCase()\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["matchImageSnapshotCommand","tuiIsString","tuiIsObject"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  /// <reference types="cypress" />
2
+ // eslint-disable-next-line @taiga-ui/no-deep-imports
3
+ import { tuiIsObject, tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
2
4
  import { matchImageSnapshotCommand } from 'cypress-image-snapshot/command';
3
5
  import { tuiWaitAllImgInside } from '../commands/wait-all-img-inside.command';
4
6
  export function tuiAddMatchImageSnapshotCommand(options) {
5
7
  const matchSnapshotFn = matchImageSnapshotCommand(options);
6
8
  Cypress.Commands.add(`matchImageSnapshot`, { prevSubject: [`optional`, `element`, `window`, `document`] }, (prevSubject, nameOrOptions, options) => {
7
9
  var _a;
8
- const name = typeof nameOrOptions === `string` ? nameOrOptions : undefined;
9
- const overloadedOptions = typeof nameOrOptions === `object` && !!nameOrOptions
10
+ const name = tuiIsString(nameOrOptions) ? nameOrOptions : undefined;
11
+ const overloadedOptions = tuiIsObject(nameOrOptions)
10
12
  ? nameOrOptions
11
13
  : options;
12
14
  tuiWaitAllImgInside(prevSubject, (_a = overloadedOptions === null || overloadedOptions === void 0 ? void 0 : overloadedOptions.waitAllImages) !== null && _a !== void 0 ? _a : true);
@@ -20,4 +22,4 @@ function makeScreenshotName(name) {
20
22
  .replace(/['[\]`()]/g, ``)
21
23
  .toLowerCase());
22
24
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvY3lwcmVzcy9zbmFwc2hvdC9jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUdqQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQXFCNUUsTUFBTSxVQUFVLCtCQUErQixDQUMzQyxPQUE0QztJQUU1QyxNQUFNLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzRCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDaEIsb0JBQW9CLEVBQ3BCLEVBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUMsRUFDNUQsQ0FDSSxXQUFXLEVBQ1gsYUFBNkQsRUFDN0QsT0FBNkMsRUFDL0MsRUFBRTs7UUFDQSxNQUFNLElBQUksR0FBRyxPQUFPLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE1BQU0saUJBQWlCLEdBQ25CLE9BQU8sYUFBYSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsYUFBYTtZQUNoRCxDQUFDLENBQUMsYUFBYTtZQUNmLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFbEIsbUJBQW1CLENBQUMsV0FBVyxFQUFFLE1BQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsYUFBYSxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUUzRSxlQUFlLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUNKLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFhO0lBQ3JDLE9BQU8sQ0FDSCxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FDSixPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVM7U0FDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNULE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1NBQ3pCLFdBQVcsRUFBRSxDQUNyQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiY3lwcmVzc1wiIC8+XG5cbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnY3lwcmVzcy1pbWFnZS1zbmFwc2hvdCc7XG5pbXBvcnQge21hdGNoSW1hZ2VTbmFwc2hvdENvbW1hbmR9IGZyb20gJ2N5cHJlc3MtaW1hZ2Utc25hcHNob3QvY29tbWFuZCc7XG5cbmltcG9ydCB7dHVpV2FpdEFsbEltZ0luc2lkZX0gZnJvbSAnLi4vY29tbWFuZHMvd2FpdC1hbGwtaW1nLWluc2lkZS5jb21tYW5kJztcblxuZGVjbGFyZSBtb2R1bGUgJ2N5cHJlc3MtaW1hZ2Utc25hcHNob3QvY29tbWFuZCcge1xuICAgIGZ1bmN0aW9uIG1hdGNoSW1hZ2VTbmFwc2hvdENvbW1hbmQob3B0aW9uczogT3B0aW9ucyk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBUdWlTbmFwc2hvdENvbW1hbmRPcHRpb25zIHtcbiAgICB3YWl0QWxsSW1hZ2VzPzogYm9vbGVhbjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIG5hbWVzcGFjZSBDeXByZXNzIHtcbiAgICAgICAgaW50ZXJmYWNlIENoYWluYWJsZSB7XG4gICAgICAgICAgICBtYXRjaEltYWdlU25hcHNob3QoXG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBPcHRpb25zICYgVHVpU25hcHNob3RDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgICAgICk6IHZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlBZGRNYXRjaEltYWdlU25hcHNob3RDb21tYW5kKFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgJiBUdWlTbmFwc2hvdENvbW1hbmRPcHRpb25zLFxuKTogdm9pZCB7XG4gICAgY29uc3QgbWF0Y2hTbmFwc2hvdEZuID0gbWF0Y2hJbWFnZVNuYXBzaG90Q29tbWFuZChvcHRpb25zKTtcblxuICAgIEN5cHJlc3MuQ29tbWFuZHMuYWRkKFxuICAgICAgICBgbWF0Y2hJbWFnZVNuYXBzaG90YCxcbiAgICAgICAge3ByZXZTdWJqZWN0OiBbYG9wdGlvbmFsYCwgYGVsZW1lbnRgLCBgd2luZG93YCwgYGRvY3VtZW50YF19LFxuICAgICAgICAoXG4gICAgICAgICAgICBwcmV2U3ViamVjdCxcbiAgICAgICAgICAgIG5hbWVPck9wdGlvbnM6IHN0cmluZyB8IChPcHRpb25zICYgVHVpU25hcHNob3RDb21tYW5kT3B0aW9ucyksXG4gICAgICAgICAgICBvcHRpb25zPzogT3B0aW9ucyAmIFR1aVNuYXBzaG90Q29tbWFuZE9wdGlvbnMsXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBuYW1lT3JPcHRpb25zID09PSBgc3RyaW5nYCA/IG5hbWVPck9wdGlvbnMgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBvdmVybG9hZGVkT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIG5hbWVPck9wdGlvbnMgPT09IGBvYmplY3RgICYmICEhbmFtZU9yT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG5hbWVPck9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zO1xuXG4gICAgICAgICAgICB0dWlXYWl0QWxsSW1nSW5zaWRlKHByZXZTdWJqZWN0LCBvdmVybG9hZGVkT3B0aW9ucz8ud2FpdEFsbEltYWdlcyA/PyB0cnVlKTtcblxuICAgICAgICAgICAgbWF0Y2hTbmFwc2hvdEZuKHByZXZTdWJqZWN0LCBtYWtlU2NyZWVuc2hvdE5hbWUobmFtZSksIG92ZXJsb2FkZWRPcHRpb25zKTtcbiAgICAgICAgfSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBtYWtlU2NyZWVuc2hvdE5hbWUobmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgbmFtZSA/P1xuICAgICAgICBDeXByZXNzLmN1cnJlbnRUZXN0LnRpdGxlUGF0aFxuICAgICAgICAgICAgLmpvaW4oYC1gKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcc3wtL2csIGAuYClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bJ1tcXF1gKCldL2csIGBgKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICApO1xufVxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvY3lwcmVzcy9zbmFwc2hvdC9jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxxREFBcUQ7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQXFCNUUsTUFBTSxVQUFVLCtCQUErQixDQUMzQyxPQUE0QztJQUU1QyxNQUFNLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzRCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDaEIsb0JBQW9CLEVBQ3BCLEVBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUMsRUFDNUQsQ0FDSSxXQUFXLEVBQ1gsYUFBNkQsRUFDN0QsT0FBNkMsRUFDL0MsRUFBRTs7UUFDQSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BFLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUNoRCxDQUFDLENBQUMsYUFBYTtZQUNmLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFZCxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxhQUFhLG1DQUFJLElBQUksQ0FBQyxDQUFDO1FBRTNFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxDQUFDLENBQ0osQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLElBQWE7SUFDckMsT0FBTyxDQUNILElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUztTQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ1QsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7U0FDckIsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7U0FDekIsV0FBVyxFQUFFLENBQ3JCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJjeXByZXNzXCIgLz5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdGFpZ2EtdWkvbm8tZGVlcC1pbXBvcnRzXG5pbXBvcnQge3R1aUlzT2JqZWN0LCB0dWlJc1N0cmluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnY3lwcmVzcy1pbWFnZS1zbmFwc2hvdCc7XG5pbXBvcnQge21hdGNoSW1hZ2VTbmFwc2hvdENvbW1hbmR9IGZyb20gJ2N5cHJlc3MtaW1hZ2Utc25hcHNob3QvY29tbWFuZCc7XG5cbmltcG9ydCB7dHVpV2FpdEFsbEltZ0luc2lkZX0gZnJvbSAnLi4vY29tbWFuZHMvd2FpdC1hbGwtaW1nLWluc2lkZS5jb21tYW5kJztcblxuZGVjbGFyZSBtb2R1bGUgJ2N5cHJlc3MtaW1hZ2Utc25hcHNob3QvY29tbWFuZCcge1xuICAgIGZ1bmN0aW9uIG1hdGNoSW1hZ2VTbmFwc2hvdENvbW1hbmQob3B0aW9uczogT3B0aW9ucyk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBUdWlTbmFwc2hvdENvbW1hbmRPcHRpb25zIHtcbiAgICB3YWl0QWxsSW1hZ2VzPzogYm9vbGVhbjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIG5hbWVzcGFjZSBDeXByZXNzIHtcbiAgICAgICAgaW50ZXJmYWNlIENoYWluYWJsZSB7XG4gICAgICAgICAgICBtYXRjaEltYWdlU25hcHNob3QoXG4gICAgICAgICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBPcHRpb25zICYgVHVpU25hcHNob3RDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgICAgICk6IHZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlBZGRNYXRjaEltYWdlU25hcHNob3RDb21tYW5kKFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgJiBUdWlTbmFwc2hvdENvbW1hbmRPcHRpb25zLFxuKTogdm9pZCB7XG4gICAgY29uc3QgbWF0Y2hTbmFwc2hvdEZuID0gbWF0Y2hJbWFnZVNuYXBzaG90Q29tbWFuZChvcHRpb25zKTtcblxuICAgIEN5cHJlc3MuQ29tbWFuZHMuYWRkKFxuICAgICAgICBgbWF0Y2hJbWFnZVNuYXBzaG90YCxcbiAgICAgICAge3ByZXZTdWJqZWN0OiBbYG9wdGlvbmFsYCwgYGVsZW1lbnRgLCBgd2luZG93YCwgYGRvY3VtZW50YF19LFxuICAgICAgICAoXG4gICAgICAgICAgICBwcmV2U3ViamVjdCxcbiAgICAgICAgICAgIG5hbWVPck9wdGlvbnM6IHN0cmluZyB8IChPcHRpb25zICYgVHVpU25hcHNob3RDb21tYW5kT3B0aW9ucyksXG4gICAgICAgICAgICBvcHRpb25zPzogT3B0aW9ucyAmIFR1aVNuYXBzaG90Q29tbWFuZE9wdGlvbnMsXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHR1aUlzU3RyaW5nKG5hbWVPck9wdGlvbnMpID8gbmFtZU9yT3B0aW9ucyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJsb2FkZWRPcHRpb25zID0gdHVpSXNPYmplY3QobmFtZU9yT3B0aW9ucylcbiAgICAgICAgICAgICAgICA/IG5hbWVPck9wdGlvbnNcbiAgICAgICAgICAgICAgICA6IG9wdGlvbnM7XG5cbiAgICAgICAgICAgIHR1aVdhaXRBbGxJbWdJbnNpZGUocHJldlN1YmplY3QsIG92ZXJsb2FkZWRPcHRpb25zPy53YWl0QWxsSW1hZ2VzID8/IHRydWUpO1xuXG4gICAgICAgICAgICBtYXRjaFNuYXBzaG90Rm4ocHJldlN1YmplY3QsIG1ha2VTY3JlZW5zaG90TmFtZShuYW1lKSwgb3ZlcmxvYWRlZE9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTY3JlZW5zaG90TmFtZShuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBuYW1lID8/XG4gICAgICAgIEN5cHJlc3MuY3VycmVudFRlc3QudGl0bGVQYXRoXG4gICAgICAgICAgICAuam9pbihgLWApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzfC0vZywgYC5gKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1snW1xcXWAoKV0vZywgYGApXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICk7XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { tuiIsString, tuiIsObject } from '@taiga-ui/cdk/utils/miscellaneous';
1
2
  import { matchImageSnapshotCommand } from 'cypress-image-snapshot/command';
2
3
 
3
4
  /// <reference types="cypress" />
@@ -95,8 +96,8 @@ function tuiAddMatchImageSnapshotCommand(options) {
95
96
  const matchSnapshotFn = matchImageSnapshotCommand(options);
96
97
  Cypress.Commands.add(`matchImageSnapshot`, { prevSubject: [`optional`, `element`, `window`, `document`] }, (prevSubject, nameOrOptions, options) => {
97
98
  var _a;
98
- const name = typeof nameOrOptions === `string` ? nameOrOptions : undefined;
99
- const overloadedOptions = typeof nameOrOptions === `object` && !!nameOrOptions
99
+ const name = tuiIsString(nameOrOptions) ? nameOrOptions : undefined;
100
+ const overloadedOptions = tuiIsObject(nameOrOptions)
100
101
  ? nameOrOptions
101
102
  : options;
102
103
  tuiWaitAllImgInside(prevSubject, (_a = overloadedOptions === null || overloadedOptions === void 0 ? void 0 : overloadedOptions.waitAllImages) !== null && _a !== void 0 ? _a : true);
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-testing-cypress.js","sources":["../../../projects/testing/cypress/assertions/be-in-viewport.ts","../../../projects/testing/cypress/commands/wait-all-img-inside.command.ts","../../../projects/testing/cypress/snapshot/command.ts","../../../projects/testing/cypress/taiga-ui-testing-cypress.ts"],"sourcesContent":["/// <reference types=\"cypress\" />\n/// <reference types=\"node\" />\n\n/**\n * Check if element is inside viewport\n *\n * @note WARNING! `.should('be.visible')` doesn't not check if element is inside viewport\n * @see https://github.com/cypress-io/cypress/issues/17483\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-342187174\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-657583222\n * @example\n ```ts\n cy.get('#test').should('be.inViewport');\n ```\n * */\nexport const tuiBeInViewportAssertion: Chai.ChaiPlugin = _chai => {\n chai.Assertion.addMethod(`inViewport`, function () {\n const subject = this._obj;\n const {top, bottom} = subject[0].getBoundingClientRect();\n\n const viewportHeight: number =\n // @ts-ignore TS2339: Property 'state' does not exist on type 'cy & CyEventEmitter'.\n Cypress.$(cy.state(`window`)).height() || 0;\n\n const subjectOverlapsAllViewport = top < 0 && bottom > viewportHeight;\n const topBorderIsVisible = top >= 0 && top < viewportHeight;\n const bottomBorderIsVisible = bottom >= 0 && bottom < viewportHeight;\n\n this.assert(\n subjectOverlapsAllViewport || topBorderIsVisible || bottomBorderIsVisible,\n `expected #{this} to be in viewport`,\n `expected #{this} to not be in viewport`,\n subject,\n );\n });\n};\n","/// <reference types=\"cypress\" />\n\nexport const tuiWaitAllImgInside = (\n prevSubject: Cypress.PrevSubjectMap<void>[Cypress.PrevSubject],\n enabled: boolean = true,\n): Cypress.Chainable<JQuery<HTMLBodyElement>> | Cypress.Chainable<JQuery> => {\n const target =\n prevSubject && Cypress.dom.isJquery(prevSubject)\n ? cy.wrap(prevSubject, {log: false})\n : cy.get(`body`, {log: false});\n\n target.then($target => {\n const img = $target.find(`img`);\n\n if (img.length && enabled) {\n const log = Cypress.log({\n displayName: `Wait all images`,\n message: `naturalWidth greaterThan 0`,\n name: `tuiWaitAllImgInside`,\n autoEnd: false,\n consoleProps: () => ({\n prevSubject,\n img,\n }),\n });\n\n cy.wrap($target, {log: false})\n .get(`img`, {log: false})\n .each((img: JQuery<HTMLImageElement>) => {\n const nativeImage = img.get(0);\n const url = nativeImage?.src || nativeImage?.srcset;\n\n if (!url) {\n return;\n }\n\n const offsetParent = img.prop(`offsetParent`);\n\n return cy.window({log: false}).then((win: Window) => {\n const rect = nativeImage.getBoundingClientRect();\n const isInViewport =\n offsetParent &&\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (win.innerHeight ||\n win.document.documentElement.clientHeight) &&\n rect.right <=\n (win.innerWidth ||\n win.document.documentElement.clientWidth);\n\n if (isInViewport) {\n if (url.includes(`base64`)) {\n (expect as any)(\n nativeImage.naturalWidth,\n ).to.be.greaterThan(0);\n } else {\n cy.request({\n url,\n failOnStatusCode: false,\n log: false,\n }).then(resp => {\n if (resp.status === 200) {\n cy.get(img as any, {log: false}).should(\n (el: JQuery<HTMLImageElement>) =>\n (expect as any)(\n el[0].naturalWidth,\n ).to.be.greaterThan(0),\n );\n }\n });\n }\n }\n });\n })\n .then(() => log.end());\n }\n });\n\n return target;\n};\n","/// <reference types=\"cypress\" />\n\nimport {Options} from 'cypress-image-snapshot';\nimport {matchImageSnapshotCommand} from 'cypress-image-snapshot/command';\n\nimport {tuiWaitAllImgInside} from '../commands/wait-all-img-inside.command';\n\ndeclare module 'cypress-image-snapshot/command' {\n function matchImageSnapshotCommand(options: Options): (...args: unknown[]) => void;\n}\n\ninterface TuiSnapshotCommandOptions {\n waitAllImages?: boolean;\n}\n\ndeclare global {\n namespace Cypress {\n interface Chainable {\n matchImageSnapshot(\n name: string,\n options?: Options & TuiSnapshotCommandOptions,\n ): void;\n }\n }\n}\n\nexport function tuiAddMatchImageSnapshotCommand(\n options: Options & TuiSnapshotCommandOptions,\n): void {\n const matchSnapshotFn = matchImageSnapshotCommand(options);\n\n Cypress.Commands.add(\n `matchImageSnapshot`,\n {prevSubject: [`optional`, `element`, `window`, `document`]},\n (\n prevSubject,\n nameOrOptions: string | (Options & TuiSnapshotCommandOptions),\n options?: Options & TuiSnapshotCommandOptions,\n ) => {\n const name = typeof nameOrOptions === `string` ? nameOrOptions : undefined;\n const overloadedOptions =\n typeof nameOrOptions === `object` && !!nameOrOptions\n ? nameOrOptions\n : options;\n\n tuiWaitAllImgInside(prevSubject, overloadedOptions?.waitAllImages ?? true);\n\n matchSnapshotFn(prevSubject, makeScreenshotName(name), overloadedOptions);\n },\n );\n}\n\nfunction makeScreenshotName(name?: string): string {\n return (\n name ??\n Cypress.currentTest.titlePath\n .join(`-`)\n .replace(/\\s|-/g, `.`)\n .replace(/['[\\]`()]/g, ``)\n .toLowerCase()\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-testing-cypress.js","sources":["../../../projects/testing/cypress/assertions/be-in-viewport.ts","../../../projects/testing/cypress/commands/wait-all-img-inside.command.ts","../../../projects/testing/cypress/snapshot/command.ts","../../../projects/testing/cypress/taiga-ui-testing-cypress.ts"],"sourcesContent":["/// <reference types=\"cypress\" />\n/// <reference types=\"node\" />\n\n/**\n * Check if element is inside viewport\n *\n * @note WARNING! `.should('be.visible')` doesn't not check if element is inside viewport\n * @see https://github.com/cypress-io/cypress/issues/17483\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-342187174\n * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-657583222\n * @example\n ```ts\n cy.get('#test').should('be.inViewport');\n ```\n * */\nexport const tuiBeInViewportAssertion: Chai.ChaiPlugin = _chai => {\n chai.Assertion.addMethod(`inViewport`, function () {\n const subject = this._obj;\n const {top, bottom} = subject[0].getBoundingClientRect();\n\n const viewportHeight: number =\n // @ts-ignore TS2339: Property 'state' does not exist on type 'cy & CyEventEmitter'.\n Cypress.$(cy.state(`window`)).height() || 0;\n\n const subjectOverlapsAllViewport = top < 0 && bottom > viewportHeight;\n const topBorderIsVisible = top >= 0 && top < viewportHeight;\n const bottomBorderIsVisible = bottom >= 0 && bottom < viewportHeight;\n\n this.assert(\n subjectOverlapsAllViewport || topBorderIsVisible || bottomBorderIsVisible,\n `expected #{this} to be in viewport`,\n `expected #{this} to not be in viewport`,\n subject,\n );\n });\n};\n","/// <reference types=\"cypress\" />\n\nexport const tuiWaitAllImgInside = (\n prevSubject: Cypress.PrevSubjectMap<void>[Cypress.PrevSubject],\n enabled: boolean = true,\n): Cypress.Chainable<JQuery<HTMLBodyElement>> | Cypress.Chainable<JQuery> => {\n const target =\n prevSubject && Cypress.dom.isJquery(prevSubject)\n ? cy.wrap(prevSubject, {log: false})\n : cy.get(`body`, {log: false});\n\n target.then($target => {\n const img = $target.find(`img`);\n\n if (img.length && enabled) {\n const log = Cypress.log({\n displayName: `Wait all images`,\n message: `naturalWidth greaterThan 0`,\n name: `tuiWaitAllImgInside`,\n autoEnd: false,\n consoleProps: () => ({\n prevSubject,\n img,\n }),\n });\n\n cy.wrap($target, {log: false})\n .get(`img`, {log: false})\n .each((img: JQuery<HTMLImageElement>) => {\n const nativeImage = img.get(0);\n const url = nativeImage?.src || nativeImage?.srcset;\n\n if (!url) {\n return;\n }\n\n const offsetParent = img.prop(`offsetParent`);\n\n return cy.window({log: false}).then((win: Window) => {\n const rect = nativeImage.getBoundingClientRect();\n const isInViewport =\n offsetParent &&\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (win.innerHeight ||\n win.document.documentElement.clientHeight) &&\n rect.right <=\n (win.innerWidth ||\n win.document.documentElement.clientWidth);\n\n if (isInViewport) {\n if (url.includes(`base64`)) {\n (expect as any)(\n nativeImage.naturalWidth,\n ).to.be.greaterThan(0);\n } else {\n cy.request({\n url,\n failOnStatusCode: false,\n log: false,\n }).then(resp => {\n if (resp.status === 200) {\n cy.get(img as any, {log: false}).should(\n (el: JQuery<HTMLImageElement>) =>\n (expect as any)(\n el[0].naturalWidth,\n ).to.be.greaterThan(0),\n );\n }\n });\n }\n }\n });\n })\n .then(() => log.end());\n }\n });\n\n return target;\n};\n","/// <reference types=\"cypress\" />\n// eslint-disable-next-line @taiga-ui/no-deep-imports\nimport {tuiIsObject, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {Options} from 'cypress-image-snapshot';\nimport {matchImageSnapshotCommand} from 'cypress-image-snapshot/command';\n\nimport {tuiWaitAllImgInside} from '../commands/wait-all-img-inside.command';\n\ndeclare module 'cypress-image-snapshot/command' {\n function matchImageSnapshotCommand(options: Options): (...args: unknown[]) => void;\n}\n\ninterface TuiSnapshotCommandOptions {\n waitAllImages?: boolean;\n}\n\ndeclare global {\n namespace Cypress {\n interface Chainable {\n matchImageSnapshot(\n name: string,\n options?: Options & TuiSnapshotCommandOptions,\n ): void;\n }\n }\n}\n\nexport function tuiAddMatchImageSnapshotCommand(\n options: Options & TuiSnapshotCommandOptions,\n): void {\n const matchSnapshotFn = matchImageSnapshotCommand(options);\n\n Cypress.Commands.add(\n `matchImageSnapshot`,\n {prevSubject: [`optional`, `element`, `window`, `document`]},\n (\n prevSubject,\n nameOrOptions: string | (Options & TuiSnapshotCommandOptions),\n options?: Options & TuiSnapshotCommandOptions,\n ) => {\n const name = tuiIsString(nameOrOptions) ? nameOrOptions : undefined;\n const overloadedOptions = tuiIsObject(nameOrOptions)\n ? nameOrOptions\n : options;\n\n tuiWaitAllImgInside(prevSubject, overloadedOptions?.waitAllImages ?? true);\n\n matchSnapshotFn(prevSubject, makeScreenshotName(name), overloadedOptions);\n },\n );\n}\n\nfunction makeScreenshotName(name?: string): string {\n return (\n name ??\n Cypress.currentTest.titlePath\n .join(`-`)\n .replace(/\\s|-/g, `.`)\n .replace(/['[\\]`()]/g, ``)\n .toLowerCase()\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@taiga-ui/testing",
3
- "version": "3.15.0",
3
+ "version": "3.16.0-dev.main-e7166ca",
4
4
  "description": "Utils functions for testing Taiga UI packages",
5
5
  "dependencies": {
6
6
  "cypress-image-snapshot": "^4.0.1",
7
- "tslib": "^2.0.0"
7
+ "tslib": ">=2.0.0"
8
+ },
9
+ "peerDependencies": {
10
+ "@taiga-ui/cdk": ">=3.16.0"
8
11
  },
9
12
  "main": "bundles/taiga-ui-testing.umd.js",
10
13
  "module": "fesm2015/taiga-ui-testing.js",