@taiga-ui/testing 3.58.0 → 3.59.0-canary.10da730

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 (160) hide show
  1. package/cypress/commands/wait-all-img-inside.command.d.ts +0 -1
  2. package/esm2020/core/accordion-item.harness.mjs +32 -0
  3. package/esm2020/core/accordion.harness.mjs +8 -0
  4. package/esm2020/core/action.harness.mjs +13 -0
  5. package/esm2020/core/avatar.harness.mjs +8 -0
  6. package/esm2020/core/badge.harness.mjs +14 -0
  7. package/esm2020/core/button.harness.mjs +16 -0
  8. package/esm2020/core/calendar.harness.mjs +52 -0
  9. package/esm2020/core/card.harness.mjs +20 -0
  10. package/esm2020/core/dialog.harness.mjs +11 -0
  11. package/esm2020/core/hosted-dropdown.harness.mjs +12 -0
  12. package/esm2020/core/island.harness.mjs +38 -0
  13. package/esm2020/core/loader.harness.mjs +20 -0
  14. package/esm2020/core/primitive-calender.harness.mjs +29 -0
  15. package/esm2020/core/primitive-spin-button.harness.mjs +12 -0
  16. package/esm2020/core/primitive-textfield.harness.mjs +11 -0
  17. package/esm2020/core/primitive-year-month-pagination.harness.mjs +32 -0
  18. package/{esm2015/core/primitive-year-picker.harness.js → esm2020/core/primitive-year-picker.harness.mjs} +9 -16
  19. package/esm2020/core/select.harness.mjs +16 -0
  20. package/esm2020/core/svg.harness.mjs +17 -0
  21. package/esm2020/core/tag.harness.mjs +26 -0
  22. package/esm2020/core/textfield.harness.mjs +8 -0
  23. package/esm2020/core/toggle.harness.mjs +16 -0
  24. package/esm2020/cypress/commands/wait-all-img-inside.command.mjs +62 -0
  25. package/esm2020/cypress/snapshot/command.mjs +25 -0
  26. package/esm2020/cypress/snapshot/plugin.mjs +23 -0
  27. package/esm2020/utils/active-element.mjs +12 -0
  28. package/esm2020/utils/configure-test-suite.mjs +32 -0
  29. package/esm2020/utils/input/filler.unit-common.mjs +48 -0
  30. package/esm2020/utils/input/form-control-state.unit-common.mjs +36 -0
  31. package/{esm2015/utils/input/placeholder.unit-common.js → esm2020/utils/input/placeholder.unit-common.mjs} +1 -1
  32. package/{esm2015/utils/input/tooltip.unit-common.js → esm2020/utils/input/tooltip.unit-common.mjs} +1 -1
  33. package/esm2020/utils/native-input.page-object.mjs +53 -0
  34. package/esm2020/utils/replace-nbsp.mjs +5 -0
  35. package/fesm2015/{taiga-ui-testing-core.js → taiga-ui-testing-core.mjs} +1 -1
  36. package/fesm2015/taiga-ui-testing-core.mjs.map +1 -0
  37. package/fesm2015/{taiga-ui-testing-cypress.js → taiga-ui-testing-cypress.mjs} +2 -2
  38. package/fesm2015/taiga-ui-testing-cypress.mjs.map +1 -0
  39. package/fesm2015/{taiga-ui-testing-exceptions.js → taiga-ui-testing-exceptions.mjs} +1 -1
  40. package/fesm2015/taiga-ui-testing-exceptions.mjs.map +1 -0
  41. package/fesm2015/{taiga-ui-testing-mocks.js → taiga-ui-testing-mocks.mjs} +1 -1
  42. package/fesm2015/taiga-ui-testing-mocks.mjs.map +1 -0
  43. package/fesm2015/{taiga-ui-testing-setup-jest.js → taiga-ui-testing-setup-jest.mjs} +1 -1
  44. package/fesm2015/taiga-ui-testing-setup-jest.mjs.map +1 -0
  45. package/fesm2015/{taiga-ui-testing-utils.js → taiga-ui-testing-utils.mjs} +6 -6
  46. package/fesm2015/taiga-ui-testing-utils.mjs.map +1 -0
  47. package/fesm2015/{taiga-ui-testing.js → taiga-ui-testing.mjs} +1 -1
  48. package/fesm2015/taiga-ui-testing.mjs.map +1 -0
  49. package/fesm2020/taiga-ui-testing-core.mjs +405 -0
  50. package/fesm2020/taiga-ui-testing-core.mjs.map +1 -0
  51. package/fesm2020/taiga-ui-testing-cypress.mjs +144 -0
  52. package/fesm2020/taiga-ui-testing-cypress.mjs.map +1 -0
  53. package/fesm2020/taiga-ui-testing-exceptions.mjs +18 -0
  54. package/fesm2020/taiga-ui-testing-exceptions.mjs.map +1 -0
  55. package/fesm2020/taiga-ui-testing-mocks.mjs +40 -0
  56. package/fesm2020/taiga-ui-testing-mocks.mjs.map +1 -0
  57. package/fesm2020/taiga-ui-testing-setup-jest.mjs +122 -0
  58. package/fesm2020/taiga-ui-testing-setup-jest.mjs.map +1 -0
  59. package/fesm2020/taiga-ui-testing-utils.mjs +511 -0
  60. package/fesm2020/taiga-ui-testing-utils.mjs.map +1 -0
  61. package/fesm2020/taiga-ui-testing.mjs +16 -0
  62. package/fesm2020/taiga-ui-testing.mjs.map +1 -0
  63. package/package.json +78 -17
  64. package/utils/configure-test-suite.d.ts +1 -1
  65. package/utils/input/filler.unit-common.d.ts +2 -2
  66. package/utils/input/form-control-state.unit-common.d.ts +2 -2
  67. package/utils/input/placeholder.unit-common.d.ts +2 -2
  68. package/utils/input/tooltip.unit-common.d.ts +2 -2
  69. package/bundles/taiga-ui-testing-core.umd.js +0 -1407
  70. package/bundles/taiga-ui-testing-core.umd.js.map +0 -1
  71. package/bundles/taiga-ui-testing-cypress.umd.js +0 -484
  72. package/bundles/taiga-ui-testing-cypress.umd.js.map +0 -1
  73. package/bundles/taiga-ui-testing-exceptions.umd.js +0 -351
  74. package/bundles/taiga-ui-testing-exceptions.umd.js.map +0 -1
  75. package/bundles/taiga-ui-testing-mocks.umd.js +0 -371
  76. package/bundles/taiga-ui-testing-mocks.umd.js.map +0 -1
  77. package/bundles/taiga-ui-testing-setup-jest.umd.js +0 -135
  78. package/bundles/taiga-ui-testing-setup-jest.umd.js.map +0 -1
  79. package/bundles/taiga-ui-testing-utils.umd.js +0 -934
  80. package/bundles/taiga-ui-testing-utils.umd.js.map +0 -1
  81. package/bundles/taiga-ui-testing.umd.js +0 -46
  82. package/bundles/taiga-ui-testing.umd.js.map +0 -1
  83. package/core/package.json +0 -10
  84. package/core/taiga-ui-testing-core.d.ts +0 -5
  85. package/cypress/package.json +0 -10
  86. package/cypress/taiga-ui-testing-cypress.d.ts +0 -5
  87. package/esm2015/core/accordion-item.harness.js +0 -49
  88. package/esm2015/core/accordion.harness.js +0 -11
  89. package/esm2015/core/action.harness.js +0 -16
  90. package/esm2015/core/avatar.harness.js +0 -11
  91. package/esm2015/core/badge.harness.js +0 -21
  92. package/esm2015/core/button.harness.js +0 -21
  93. package/esm2015/core/calendar.harness.js +0 -84
  94. package/esm2015/core/card.harness.js +0 -25
  95. package/esm2015/core/dialog.harness.js +0 -14
  96. package/esm2015/core/hosted-dropdown.harness.js +0 -17
  97. package/esm2015/core/island.harness.js +0 -53
  98. package/esm2015/core/loader.harness.js +0 -25
  99. package/esm2015/core/primitive-calender.harness.js +0 -40
  100. package/esm2015/core/primitive-spin-button.harness.js +0 -17
  101. package/esm2015/core/primitive-textfield.harness.js +0 -16
  102. package/esm2015/core/primitive-year-month-pagination.harness.js +0 -49
  103. package/esm2015/core/select.harness.js +0 -21
  104. package/esm2015/core/svg.harness.js +0 -27
  105. package/esm2015/core/tag.harness.js +0 -39
  106. package/esm2015/core/textfield.harness.js +0 -11
  107. package/esm2015/core/toggle.harness.js +0 -21
  108. package/esm2015/cypress/commands/wait-all-img-inside.command.js +0 -62
  109. package/esm2015/cypress/snapshot/command.js +0 -25
  110. package/esm2015/cypress/snapshot/plugin.js +0 -26
  111. package/esm2015/utils/active-element.js +0 -14
  112. package/esm2015/utils/configure-test-suite.js +0 -33
  113. package/esm2015/utils/input/filler.unit-common.js +0 -50
  114. package/esm2015/utils/input/form-control-state.unit-common.js +0 -37
  115. package/esm2015/utils/native-input.page-object.js +0 -58
  116. package/esm2015/utils/replace-nbsp.js +0 -6
  117. package/exceptions/package.json +0 -10
  118. package/exceptions/taiga-ui-testing-exceptions.d.ts +0 -5
  119. package/fesm2015/taiga-ui-testing-core.js.map +0 -1
  120. package/fesm2015/taiga-ui-testing-cypress.js.map +0 -1
  121. package/fesm2015/taiga-ui-testing-exceptions.js.map +0 -1
  122. package/fesm2015/taiga-ui-testing-mocks.js.map +0 -1
  123. package/fesm2015/taiga-ui-testing-setup-jest.js.map +0 -1
  124. package/fesm2015/taiga-ui-testing-utils.js.map +0 -1
  125. package/fesm2015/taiga-ui-testing.js.map +0 -1
  126. package/mocks/package.json +0 -10
  127. package/mocks/taiga-ui-testing-mocks.d.ts +0 -5
  128. package/setup-jest/package.json +0 -10
  129. package/setup-jest/taiga-ui-testing-setup-jest.d.ts +0 -5
  130. package/taiga-ui-testing.d.ts +0 -5
  131. package/utils/package.json +0 -10
  132. package/utils/taiga-ui-testing-utils.d.ts +0 -5
  133. /package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  134. /package/{esm2015/core/marker-icon.harness.js → esm2020/core/marker-icon.harness.mjs} +0 -0
  135. /package/{esm2015/core/taiga-ui-testing-core.js → esm2020/core/taiga-ui-testing-core.mjs} +0 -0
  136. /package/{esm2015/cypress/assertions/be-in-viewport.js → esm2020/cypress/assertions/be-in-viewport.mjs} +0 -0
  137. /package/{esm2015/cypress/assertions/index.js → esm2020/cypress/assertions/index.mjs} +0 -0
  138. /package/{esm2015/cypress/index.js → esm2020/cypress/index.mjs} +0 -0
  139. /package/{esm2015/cypress/taiga-ui-testing-cypress.js → esm2020/cypress/taiga-ui-testing-cypress.mjs} +0 -0
  140. /package/{esm2015/exceptions/element-is-not-input.exception.js → esm2020/exceptions/element-is-not-input.exception.mjs} +0 -0
  141. /package/{esm2015/exceptions/field-not-found.exception.js → esm2020/exceptions/field-not-found.exception.mjs} +0 -0
  142. /package/{esm2015/exceptions/index.js → esm2020/exceptions/index.mjs} +0 -0
  143. /package/{esm2015/exceptions/taiga-ui-testing-exceptions.js → esm2020/exceptions/taiga-ui-testing-exceptions.mjs} +0 -0
  144. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  145. /package/{esm2015/mocks/event.js → esm2020/mocks/event.mjs} +0 -0
  146. /package/{esm2015/mocks/index.js → esm2020/mocks/index.mjs} +0 -0
  147. /package/{esm2015/mocks/sanitizer.js → esm2020/mocks/sanitizer.mjs} +0 -0
  148. /package/{esm2015/mocks/switch-ng-dev-mode.js → esm2020/mocks/switch-ng-dev-mode.mjs} +0 -0
  149. /package/{esm2015/mocks/taiga-ui-testing-mocks.js → esm2020/mocks/taiga-ui-testing-mocks.mjs} +0 -0
  150. /package/{esm2015/setup-jest/index.js → esm2020/setup-jest/index.mjs} +0 -0
  151. /package/{esm2015/setup-jest/taiga-ui-testing-setup-jest.js → esm2020/setup-jest/taiga-ui-testing-setup-jest.mjs} +0 -0
  152. /package/{esm2015/taiga-ui-testing.js → esm2020/taiga-ui-testing.mjs} +0 -0
  153. /package/{esm2015/utils/date.js → esm2020/utils/date.mjs} +0 -0
  154. /package/{esm2015/utils/helpers.js → esm2020/utils/helpers.mjs} +0 -0
  155. /package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  156. /package/{esm2015/utils/input/cleaner.unit-common.js → esm2020/utils/input/cleaner.unit-common.mjs} +0 -0
  157. /package/{esm2015/utils/keyboard-event.js → esm2020/utils/keyboard-event.mjs} +0 -0
  158. /package/{esm2015/utils/page-object.js → esm2020/utils/page-object.mjs} +0 -0
  159. /package/{esm2015/utils/taiga-ui-testing-utils.js → esm2020/utils/taiga-ui-testing-utils.mjs} +0 -0
  160. /package/{esm2015/utils/viewport.js → esm2020/utils/viewport.mjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-testing-core.mjs","sources":["../../../projects/testing/core/accordion.harness.ts","../../../projects/testing/core/svg.harness.ts","../../../projects/testing/core/accordion-item.harness.ts","../../../projects/testing/core/marker-icon.harness.ts","../../../projects/testing/core/action.harness.ts","../../../projects/testing/core/avatar.harness.ts","../../../projects/testing/core/badge.harness.ts","../../../projects/testing/core/loader.harness.ts","../../../projects/testing/core/button.harness.ts","../../../projects/testing/core/primitive-calender.harness.ts","../../../projects/testing/core/primitive-spin-button.harness.ts","../../../projects/testing/core/primitive-year-month-pagination.harness.ts","../../../projects/testing/core/primitive-year-picker.harness.ts","../../../projects/testing/core/calendar.harness.ts","../../../projects/testing/core/card.harness.ts","../../../projects/testing/core/dialog.harness.ts","../../../projects/testing/core/hosted-dropdown.harness.ts","../../../projects/testing/core/island.harness.ts","../../../projects/testing/core/primitive-textfield.harness.ts","../../../projects/testing/core/select.harness.ts","../../../projects/testing/core/tag.harness.ts","../../../projects/testing/core/textfield.harness.ts","../../../projects/testing/core/toggle.harness.ts","../../../projects/testing/core/taiga-ui-testing-core.ts"],"sourcesContent":["import {TuiContentContainerComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiAccordionHarness extends TuiContentContainerComponentHarness {\n static hostSelector = `tui-accordion`;\n\n async hasRoundedCorners(): Promise<boolean> {\n return (await this.locatorFor(`.t-group`)()).hasClass(`tui-group_rounded`);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiSvgHarness extends TuiComponentHarness {\n static hostSelector = `tui-svg`;\n\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n async text(): Promise<string> {\n return (await this.host()).text();\n }\n\n async isInnerHTML(): Promise<boolean> {\n return !!(await this.locatorForOptional(`div`)());\n }\n\n async getUse(): Promise<string | null> {\n return (\n (await this.locatorForOptional(`use`)())?.getAttribute(`xlink:href`) ?? null\n );\n }\n}\n","import {TestKey} from '@angular/cdk/testing';\nimport {TuiContentContainerComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiSvgHarness} from './svg.harness';\n\nexport class TuiAccordionItemHarness extends TuiContentContainerComponentHarness {\n static hostSelector = `tui-accordion-item`;\n\n private readonly header = this.locatorFor(`.t-header`);\n\n async getTitle(): Promise<string> {\n return (await this.locatorFor(`.t-title`)()).text();\n }\n\n async getContent(): Promise<string | null> {\n return (await this.locatorForOptional(`.t-content`)())?.text() ?? null;\n }\n\n async clickHeader(): Promise<void> {\n return (await this.locatorFor(`.t-header`)()).click();\n }\n\n async getBorders(): Promise<string | null> {\n return (await this.host()).getAttribute(`data-borders`);\n }\n\n async hasArrow(): Promise<boolean> {\n return (\n !!(await this.locatorForOptional(\n TuiSvgHarness.with({selector: `.t-icon`}),\n )()) ?? false\n );\n }\n\n async focus(): Promise<void> {\n return (await this.header()).focus();\n }\n\n async sendEscKey(): Promise<void> {\n return (await this.header()).sendKeys(TestKey.ESCAPE);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiMarkerIconHarness extends TuiComponentHarness {\n static hostSelector = `tui-marker-icon`;\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiMarkerIconHarness} from './marker-icon.harness';\n\nexport class TuiActionHarness extends TuiComponentHarness {\n static hostSelector = `button[tuiAction], a[tuiAction]`;\n\n protected getIconHarness = this.locatorForOptional(TuiMarkerIconHarness);\n\n async icon(): Promise<TuiMarkerIconHarness | null> {\n return this.getIconHarness();\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiAvatarHarness extends TuiComponentHarness {\n static hostSelector = `tui-avatar`;\n\n async text(): Promise<string> {\n return (await this.host()).text();\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiBadgeHarness extends TuiComponentHarness {\n static hostSelector = `tui-badge`;\n\n async text(): Promise<string> {\n return (await this.host()).text();\n }\n\n async padding(): Promise<string | null> {\n return (await this.host()).getAttribute(`data-padding`);\n }\n\n async hasClass(cls: string): Promise<boolean> {\n return (await this.host()).hasClass(cls);\n }\n}\n","import {tuiHarnessWith, tuiWithPredicate} from '@taiga-ui/testing/utils';\n\n@tuiWithPredicate\nexport class TuiLoaderHarness extends tuiHarnessWith<TuiLoaderHarness>(`tui-loader`) {\n private readonly loader = this.locatorForOptional(`fieldset.t-content + .t-loader`);\n\n async isLoading(): Promise<boolean> {\n return !!(await this.loader());\n }\n\n async getText(): Promise<string> {\n const loader = await this.loader();\n\n return loader?.text() ?? ``;\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiLoaderHarness} from './loader.harness';\n\nexport class TuiButtonHarness extends TuiComponentHarness {\n static hostSelector = `button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]`;\n private readonly loader = this.locatorForOptional(TuiLoaderHarness);\n\n async isLoading(): Promise<boolean> {\n return !!(await this.loader());\n }\n\n async hasClass(input: string): Promise<boolean> {\n return (await this.host()).hasClass(input);\n }\n}\n","import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\ninterface TuiDayCellHarnessFilters extends BaseHarnessFilters {\n day: number;\n}\n\nclass TuiDayCellHarness extends ComponentHarness {\n static hostSelector = `.t-cell:not(.t-cell_unavailable)`;\n\n static with(options: TuiDayCellHarnessFilters): HarnessPredicate<TuiDayCellHarness> {\n return new HarnessPredicate(TuiDayCellHarness, options).addOption(\n `day`,\n options.day,\n async (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), `${text}`),\n );\n }\n\n async getText(): Promise<string> {\n return (await this.locatorFor(`.t-item`)()).text();\n }\n\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n async hover(): Promise<void> {\n return (await this.host()).hover();\n }\n}\n\nexport class TuiPrimitiveCalendarHarness extends TuiComponentHarness {\n static hostSelector = `tui-primitive-calendar`;\n\n async clickDay(day: number): Promise<void> {\n const dayCell = await this.locatorFor(\n TuiDayCellHarness.with({day, ancestor: `#date-rows`}),\n )();\n\n return dayCell.click();\n }\n\n async hoverDay(day: number): Promise<void> {\n const dayCell = await this.locatorFor(\n TuiDayCellHarness.with({day, ancestor: `#date-rows`}),\n )();\n\n return dayCell.hover();\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiButtonHarness} from './button.harness';\n\nexport class TuiPrimitiveSpinButtonHarness extends TuiComponentHarness {\n static hostSelector = `tui-primitive-spin-button`;\n\n async isLeftDisabled(): Promise<boolean> {\n return (await this.locatorForAll(TuiButtonHarness)())[0].hasClass(`t-hidden`);\n }\n\n async isRightDisabled(): Promise<boolean> {\n return (await this.locatorForAll(TuiButtonHarness)())[1].hasClass(`t-hidden`);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiPrimitiveSpinButtonHarness} from './primitive-spin-button.harness';\n\nexport class TuiPrimitiveYearMonthPaginationHarness extends TuiComponentHarness {\n static hostSelector = `tui-primitive-year-month-pagination`;\n\n private readonly buttonLeft = this.locatorForOptional(\n `button[tuiIconButton]:first-child`,\n );\n\n private readonly content = this.locatorForOptional(`.t-calendar-title`);\n\n private readonly buttonRight = this.locatorForOptional(\n `button[tuiIconButton]:last-child`,\n );\n\n private readonly button = this.locatorForOptional(`#year-btn`);\n private readonly primitiveSpinButton = this.locatorFor(TuiPrimitiveSpinButtonHarness);\n\n async clickLeft(): Promise<void> {\n return (await this.buttonLeft())?.click();\n }\n\n async getContentText(): Promise<string> {\n return (await this.content())?.text() ?? ``;\n }\n\n async clickRight(): Promise<void> {\n return (await this.buttonRight())?.click();\n }\n\n async clickYear(): Promise<void> {\n return (await this.button())?.click();\n }\n\n async isLeftDisabled(): Promise<boolean> {\n return (await this.primitiveSpinButton()).isLeftDisabled();\n }\n\n async isRightDisabled(): Promise<boolean> {\n return (await this.primitiveSpinButton()).isRightDisabled();\n }\n}\n","import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\ninterface TuiYearCellHarnessFilters extends BaseHarnessFilters {\n year: string;\n}\n\nclass TuiYearCellHarness extends ComponentHarness {\n static hostSelector = `.t-cell`;\n\n static with(\n options: TuiYearCellHarnessFilters,\n ): HarnessPredicate<TuiYearCellHarness> {\n return new HarnessPredicate(TuiYearCellHarness, options).addOption(\n `year`,\n options.year,\n async (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n async getText(): Promise<string> {\n return (await this.locatorFor(`.t-item`)()).text();\n }\n\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n\nexport class TuiPrimitiveYearPickerHarness extends TuiComponentHarness {\n static hostSelector = `tui-primitive-year-picker`;\n\n async clickYear(year: string): Promise<void> {\n const yearCell = await this.locatorFor(TuiYearCellHarness.with({year}))();\n\n return yearCell.click();\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiPrimitiveCalendarHarness} from './primitive-calender.harness';\nimport {TuiPrimitiveYearMonthPaginationHarness} from './primitive-year-month-pagination.harness';\nimport {TuiPrimitiveYearPickerHarness} from './primitive-year-picker.harness';\n\nexport class TuiCalendarHarness extends TuiComponentHarness {\n static hostSelector = `tui-calendar`;\n\n private readonly getPrimitiveYearPickerHarness = this.locatorForOptional(\n TuiPrimitiveYearPickerHarness,\n );\n\n private readonly getPrimitiveYearMonthPaginationHarness = this.locatorForOptional(\n TuiPrimitiveYearMonthPaginationHarness,\n );\n\n private readonly getPrimitiveCalendarHarness = this.locatorForOptional(\n TuiPrimitiveCalendarHarness,\n );\n\n async yearPickerShown(): Promise<boolean> {\n return !!(await this.getPrimitiveYearPickerHarness());\n }\n\n async yearMonthPaginationShown(): Promise<boolean> {\n return !!(await this.getPrimitiveYearMonthPaginationHarness());\n }\n\n async primitiveCalendarShown(): Promise<boolean> {\n return !!(await this.getPrimitiveCalendarHarness());\n }\n\n async isPaginationLeftDisabled(): Promise<boolean> {\n return (\n (await this.getPrimitiveYearMonthPaginationHarness())?.isLeftDisabled() ??\n false\n );\n }\n\n async isPaginationRightDisabled(): Promise<boolean> {\n return (\n (await this.getPrimitiveYearMonthPaginationHarness())?.isRightDisabled() ??\n false\n );\n }\n\n async clickMonthLeft(): Promise<void> {\n return (await this.getPrimitiveYearMonthPaginationHarness())?.clickLeft();\n }\n\n async getContentText(): Promise<string> {\n return (\n (await this.getPrimitiveYearMonthPaginationHarness())?.getContentText() ?? ``\n );\n }\n\n async clickMonthRight(): Promise<void> {\n return (await this.getPrimitiveYearMonthPaginationHarness())?.clickRight();\n }\n\n async clickPaginationYear(): Promise<void> {\n return (await this.getPrimitiveYearMonthPaginationHarness())?.clickYear();\n }\n\n async clickPickerYear(year: string): Promise<void> {\n return (await this.getPrimitiveYearPickerHarness())?.clickYear(year);\n }\n\n async clickDay(day: number): Promise<void> {\n return (await this.getPrimitiveCalendarHarness())?.clickDay(day);\n }\n\n async hoverDay(day: number): Promise<void> {\n return (await this.getPrimitiveCalendarHarness())?.hoverDay(day);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiSvgHarness} from './svg.harness';\n\nexport class TuiThumbnailCardHarness extends TuiComponentHarness {\n static hostSelector = `tui-thumbnail-card`;\n\n async hasPaymentSystemLogo(): Promise<boolean> {\n const tuiSvg = await this.locatorForOptional(\n TuiSvgHarness.with({selector: `.t-payment-system-logo`}),\n )();\n\n return !!tuiSvg;\n }\n\n async hasBrandLogo(): Promise<boolean> {\n const tuiSvg = await this.locatorForOptional(\n TuiSvgHarness.with({selector: `.t-brand-logo`}),\n )();\n\n return !!tuiSvg;\n }\n}\n\n/**\n * @deprecated use {@link TuiThumbnailCardHarness}\n */\nexport class TuiCardHarness extends TuiThumbnailCardHarness {\n static override hostSelector = `tui-card`;\n}\n","import {TuiContentContainerComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiButtonHarness} from './button.harness';\n\nexport class TuiDialogHarness extends TuiContentContainerComponentHarness {\n static hostSelector = `tui-dialog`;\n\n async getCloseButton(): Promise<TuiButtonHarness | null> {\n return this.locatorForOptional(\n TuiButtonHarness.with({\n selector: `[automation-id=tui-dialog__close]`,\n }),\n )();\n }\n}\n","import {TestKey} from '@angular/cdk/testing';\nimport {TuiContentContainerComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiHostedDropdownHarness extends TuiContentContainerComponentHarness {\n static hostSelector = `tui-hosted-dropdown`;\n\n async sendSpaceKey(): Promise<void> {\n return (await this.host()).sendKeys(` `);\n }\n\n async sendEscKey(): Promise<void> {\n return (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n}\n","import {TuiSizeL, TuiSizeS} from '@taiga-ui/core';\nimport {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiIslandHarness extends TuiComponentHarness {\n static hostSelector = `tui-island`;\n\n async getSize(): Promise<TuiSizeL | TuiSizeS> {\n if (await this.isSizeL()) {\n return `l`;\n }\n\n if (await this.isSizeM()) {\n return `m`;\n }\n\n return `s`;\n }\n\n async getTextAlign(): Promise<'center' | 'left' | 'right'> {\n if (await this.isTextAlignLeft()) {\n return `left`;\n }\n\n if (await this.isTextAlignCenter()) {\n return `center`;\n }\n\n return `right`;\n }\n\n async isHoverable(): Promise<boolean> {\n return (await this.host()).hasClass(`tui-island_hoverable`);\n }\n\n private async isTextAlignLeft(): Promise<boolean> {\n return (await this.host()).hasClass(`tui-island_text-align_left`);\n }\n\n private async isTextAlignCenter(): Promise<boolean> {\n return (await this.host()).hasClass(`tui-island_text-align_center`);\n }\n\n private async isSizeM(): Promise<boolean> {\n return (await this.host()).hasClass(`tui-island_size_m`);\n }\n\n private async isSizeL(): Promise<boolean> {\n return (await this.host()).hasClass(`tui-island_size_l`);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiPrimitiveTextfieldHarness extends TuiComponentHarness {\n static hostSelector = `tui-primitive-textfield`;\n\n async valueDecorationText(): Promise<string> {\n return (await this.locatorFor(`tui-value-decoration`)()).text();\n }\n\n async inputPlaceholder(): Promise<string> {\n return (await this.locatorFor(`input`)()).getProperty(`placeholder`);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiHostedDropdownHarness} from './hosted-dropdown.harness';\n\nexport class TuiSelectHarness extends TuiComponentHarness {\n static hostSelector = `tui-select`;\n private readonly hostedDropdown = this.locatorFor(TuiHostedDropdownHarness);\n\n async sendSpaceKey(): Promise<void> {\n return (await this.hostedDropdown()).sendSpaceKey();\n }\n\n async sendEscKey(): Promise<void> {\n return (await this.hostedDropdown()).sendEscKey();\n }\n}\n","import {TestElement, TestKey} from '@angular/cdk/testing';\nimport {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiSvgHarness} from './svg.harness';\n\nexport class TuiTagHarness extends TuiComponentHarness {\n static hostSelector = `tui-tag`;\n\n async getCrossIcon(): Promise<TuiSvgHarness | null> {\n return this.locatorForOptional(TuiSvgHarness.with({selector: `.t-icon`}))();\n }\n\n async getBackgroundColor(): Promise<string> {\n const div = await this.locatorFor(`:first-child`)();\n\n return div.getCssValue(`background-color`);\n }\n\n async getInput(): Promise<TestElement | null> {\n return this.locatorForOptional(`input.t-edit`)();\n }\n\n async sendEnter(): Promise<void> {\n return (await this.host()).sendKeys(TestKey.ENTER);\n }\n\n async sendBackspace(): Promise<void> {\n return (await this.host()).sendKeys(TestKey.BACKSPACE);\n }\n\n async sendDelete(): Promise<void> {\n return (await this.host()).sendKeys(TestKey.DELETE);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nexport class TuiTextfieldHarness extends TuiComponentHarness {\n static hostSelector = `input[tuiTextfield], textarea[tuiTextfield]`;\n\n async sendSpaceKey(): Promise<void> {\n return (await this.host()).sendKeys(` `);\n }\n}\n","import {TuiComponentHarness} from '@taiga-ui/testing/utils';\n\nimport {TuiSvgHarness} from './svg.harness';\n\nexport class TuiToggleHarness extends TuiComponentHarness {\n static hostSelector = `tui-toggle`;\n protected input = this.locatorFor(`input`);\n\n async toggle(): Promise<void> {\n return (await this.input()).click();\n }\n\n async getIcons(): Promise<TuiSvgHarness[]> {\n return this.locatorForAll(TuiSvgHarness)();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ import { tuiIsString, tuiIsObject } from '@taiga-ui/cdk/utils/miscellaneous';
2
+ import { matchImageSnapshotCommand } from 'cypress-image-snapshot/command';
3
+ import fs from 'fs';
4
+
5
+ /// <reference types="cypress" />
6
+ /// <reference types="node" />
7
+ /**
8
+ * Check if element is inside viewport
9
+ *
10
+ * @note WARNING! `.should('be.visible')` doesn't not check if element is inside viewport
11
+ * @see https://github.com/cypress-io/cypress/issues/17483
12
+ * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-342187174
13
+ * @see https://github.com/cypress-io/cypress/issues/877#issuecomment-657583222
14
+ * @example
15
+ ```ts
16
+ cy.get('#test').should('be.inViewport');
17
+ ```
18
+ * */
19
+ const tuiBeInViewportAssertion = _chai => {
20
+ chai.Assertion.addMethod(`inViewport`, function () {
21
+ const subject = this._obj;
22
+ const { top, bottom } = subject[0].getBoundingClientRect();
23
+ const viewportHeight =
24
+ // @ts-ignore TS2339: Property 'state' does not exist on type 'cy & CyEventEmitter'.
25
+ Cypress.$(cy.state(`window`)).height() || 0;
26
+ const subjectOverlapsAllViewport = top < 0 && bottom > viewportHeight;
27
+ const topBorderIsVisible = top >= 0 && top < viewportHeight;
28
+ const bottomBorderIsVisible = bottom >= 0 && bottom < viewportHeight;
29
+ this.assert(subjectOverlapsAllViewport || topBorderIsVisible || bottomBorderIsVisible, `expected #{this} to be in viewport`, `expected #{this} to not be in viewport`, subject);
30
+ });
31
+ };
32
+
33
+ /// <reference types="cypress" />
34
+ const tuiWaitAllImgInside = (prevSubject, enabled = true) => {
35
+ const target = prevSubject && Cypress.dom.isJquery(prevSubject)
36
+ ? cy.wrap(prevSubject, { log: false })
37
+ : cy.get(`body`, { log: false });
38
+ target.then($target => {
39
+ const img = $target.find(`img`);
40
+ if (img.length && enabled) {
41
+ const log = Cypress.log({
42
+ displayName: `Wait all images`,
43
+ message: `naturalWidth greaterThan 0`,
44
+ name: `tuiWaitAllImgInside`,
45
+ autoEnd: false,
46
+ consoleProps: () => ({
47
+ prevSubject,
48
+ img,
49
+ }),
50
+ });
51
+ cy.wrap($target, { log: false })
52
+ .get(`img`, { log: false })
53
+ .each((img) => {
54
+ const nativeImage = img.get(0);
55
+ const url = nativeImage?.src || nativeImage?.srcset;
56
+ if (!url) {
57
+ return;
58
+ }
59
+ const offsetParent = img.prop(`offsetParent`);
60
+ return cy.window({ log: false }).then((win) => {
61
+ const rect = nativeImage.getBoundingClientRect();
62
+ const isInViewport = offsetParent &&
63
+ rect.top >= 0 &&
64
+ rect.left >= 0 &&
65
+ rect.bottom <=
66
+ (win.innerHeight ||
67
+ win.document.documentElement.clientHeight) &&
68
+ rect.right <=
69
+ (win.innerWidth ||
70
+ win.document.documentElement.clientWidth);
71
+ if (isInViewport) {
72
+ if (url.includes(`base64`)) {
73
+ expect(nativeImage.naturalWidth).to.be.greaterThan(0);
74
+ }
75
+ else {
76
+ cy.request({
77
+ url,
78
+ failOnStatusCode: false,
79
+ log: false,
80
+ }).then(resp => {
81
+ if (resp.status === 200) {
82
+ cy.get(img, { log: false }).should((el) => expect(el[0].naturalWidth).to.be.greaterThan(0));
83
+ }
84
+ });
85
+ }
86
+ }
87
+ });
88
+ })
89
+ .then(() => log.end());
90
+ }
91
+ });
92
+ return target;
93
+ };
94
+
95
+ /// <reference types="cypress" />
96
+ // eslint-disable-next-line @taiga-ui/experience/no-deep-imports
97
+ function makeScreenshotName(name) {
98
+ return (name ??
99
+ Cypress.currentTest.titlePath
100
+ .join(`-`)
101
+ .replace(/\s|-/g, `.`)
102
+ .replace(/['[\]`()]/g, ``)
103
+ .toLowerCase());
104
+ }
105
+ function tuiAddMatchImageSnapshotCommand(options) {
106
+ const matchSnapshotFn = matchImageSnapshotCommand(options);
107
+ Cypress.Commands.add(`matchImageSnapshot`, { prevSubject: [`optional`, `element`, `window`, `document`] }, (prevSubject, nameOrOptions, options) => {
108
+ const name = tuiIsString(nameOrOptions) ? nameOrOptions : undefined;
109
+ const overloadedOptions = tuiIsObject(nameOrOptions)
110
+ ? nameOrOptions
111
+ : options;
112
+ tuiWaitAllImgInside(prevSubject, overloadedOptions?.waitAllImages ?? true);
113
+ matchSnapshotFn(prevSubject, makeScreenshotName(name), overloadedOptions);
114
+ });
115
+ }
116
+
117
+ /// <reference types="cypress" />
118
+ /// <reference types="node" />
119
+ async function tuiAddSnapshotPlugin(on, config, { newSnapshotMarkEnabled, newSnapshotMarkFn }) {
120
+ const { addMatchImageSnapshotPlugin, matchImageSnapshotPlugin } = await import('cypress-image-snapshot/plugin');
121
+ addMatchImageSnapshotPlugin(on, config);
122
+ on(`after:screenshot`, (details) => {
123
+ const { name, path, testFailure } = details;
124
+ const possibleSnapshotPath = path
125
+ .replace(`screenshots`, `snapshots`)
126
+ .replace(/\.(\w+)$/g, `.snap.$1`);
127
+ const snapshotAlreadyExists = fs.existsSync(possibleSnapshotPath);
128
+ if (newSnapshotMarkEnabled && !testFailure && !snapshotAlreadyExists) {
129
+ const newName = newSnapshotMarkFn(name);
130
+ const newPath = path.replace(name, newName);
131
+ fs.renameSync(path, newPath);
132
+ console.info(`\x1B[32m%s\x1B[0m`, `\t[tuiAddSnapshotPlugin]:`, `${name} => ${newName}`);
133
+ return matchImageSnapshotPlugin({ ...details, path: newPath });
134
+ }
135
+ return matchImageSnapshotPlugin(details);
136
+ });
137
+ }
138
+
139
+ /**
140
+ * Generated bundle index. Do not edit.
141
+ */
142
+
143
+ export { tuiAddMatchImageSnapshotCommand, tuiAddSnapshotPlugin, tuiBeInViewportAssertion, tuiWaitAllImgInside };
144
+ //# sourceMappingURL=taiga-ui-testing-cypress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-testing-cypress.mjs","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/snapshot/plugin.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/experience/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\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\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","/// <reference types=\"cypress\" />\n/// <reference types=\"node\" />\n\nimport fs from 'fs';\n\ndeclare module 'cypress-image-snapshot/plugin' {\n function matchImageSnapshotPlugin(\n details: Cypress.ScreenshotDetails,\n ): Cypress.AfterScreenshotReturnObject | void;\n}\n\nexport interface TuiSnapshotPluginOptions {\n newSnapshotMarkEnabled: boolean;\n newSnapshotMarkFn: (oldSnapshotFileName: string) => string;\n}\n\nexport async function tuiAddSnapshotPlugin(\n on: Cypress.PluginEvents,\n config: Cypress.PluginConfigOptions,\n {newSnapshotMarkEnabled, newSnapshotMarkFn}: TuiSnapshotPluginOptions,\n): Promise<void> {\n const {addMatchImageSnapshotPlugin, matchImageSnapshotPlugin} = await import(\n `cypress-image-snapshot/plugin`\n );\n\n addMatchImageSnapshotPlugin(on, config);\n\n on(`after:screenshot`, (details: Cypress.ScreenshotDetails) => {\n const {name, path, testFailure} = details;\n const possibleSnapshotPath = path\n .replace(`screenshots`, `snapshots`)\n .replace(/\\.(\\w+)$/g, `.snap.$1`);\n const snapshotAlreadyExists = fs.existsSync(possibleSnapshotPath);\n\n if (newSnapshotMarkEnabled && !testFailure && !snapshotAlreadyExists) {\n const newName = newSnapshotMarkFn(name);\n const newPath = path.replace(name, newName);\n\n fs.renameSync(path, newPath);\n\n console.info(\n `\\x1B[32m%s\\x1B[0m`,\n `\\t[tuiAddSnapshotPlugin]:`,\n `${name} => ${newName}`,\n );\n\n return matchImageSnapshotPlugin({...details, path: newPath});\n }\n\n return matchImageSnapshotPlugin(details);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ class TuiElementIsNotInputException extends Error {
2
+ constructor(automationId) {
3
+ super(`Element ${automationId} is not <input />`);
4
+ }
5
+ }
6
+
7
+ class TuiFieldNotFoundException extends Error {
8
+ constructor(automationId) {
9
+ super(`Field ${automationId} not found`);
10
+ }
11
+ }
12
+
13
+ /**
14
+ * Generated bundle index. Do not edit.
15
+ */
16
+
17
+ export { TuiElementIsNotInputException, TuiFieldNotFoundException };
18
+ //# sourceMappingURL=taiga-ui-testing-exceptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-testing-exceptions.mjs","sources":["../../../projects/testing/exceptions/element-is-not-input.exception.ts","../../../projects/testing/exceptions/field-not-found.exception.ts","../../../projects/testing/exceptions/taiga-ui-testing-exceptions.ts"],"sourcesContent":["export class TuiElementIsNotInputException extends Error {\n constructor(automationId: string) {\n super(`Element ${automationId} is not <input />`);\n }\n}\n","export class TuiFieldNotFoundException extends Error {\n constructor(automationId: string) {\n super(`Field ${automationId} not found`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAM,MAAO,6BAA8B,SAAQ,KAAK,CAAA;AACpD,IAAA,WAAA,CAAY,YAAoB,EAAA;AAC5B,QAAA,KAAK,CAAC,CAAA,QAAA,EAAW,YAAY,CAAA,iBAAA,CAAmB,CAAC,CAAC;KACrD;AACJ;;ACJK,MAAO,yBAA0B,SAAQ,KAAK,CAAA;AAChD,IAAA,WAAA,CAAY,YAAoB,EAAA;AAC5B,QAAA,KAAK,CAAC,CAAA,MAAA,EAAS,YAAY,CAAA,UAAA,CAAY,CAAC,CAAC;KAC5C;AACJ;;ACJD;;AAEG;;;;"}
@@ -0,0 +1,40 @@
1
+ import { TUI_SANITIZER } from '@taiga-ui/core';
2
+
3
+ class TuiMockEvent extends Event {
4
+ constructor(type, options = {}) {
5
+ super(type, options);
6
+ const event = new Event(type);
7
+ for (const key in options) {
8
+ if (options.hasOwnProperty(key)) {
9
+ Object.defineProperty(event, key, { value: options[key] });
10
+ }
11
+ }
12
+ // @ts-ignore
13
+ return event;
14
+ }
15
+ }
16
+
17
+ const TUI_SANITIZER_MOCK = {
18
+ provide: TUI_SANITIZER,
19
+ useValue: {
20
+ sanitize(_context, src) {
21
+ // Skip error
22
+ // WARNING: sanitizing HTML stripped some content, see
23
+ // https://g.co/ng/security#xss
24
+ return src;
25
+ },
26
+ },
27
+ };
28
+
29
+ function tuiSwitchNgDevMode(enable) {
30
+ if (global) {
31
+ global.ngDevMode = enable;
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Generated bundle index. Do not edit.
37
+ */
38
+
39
+ export { TUI_SANITIZER_MOCK, TuiMockEvent, tuiSwitchNgDevMode };
40
+ //# sourceMappingURL=taiga-ui-testing-mocks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-testing-mocks.mjs","sources":["../../../projects/testing/mocks/event.ts","../../../projects/testing/mocks/sanitizer.ts","../../../projects/testing/mocks/switch-ng-dev-mode.ts","../../../projects/testing/mocks/taiga-ui-testing-mocks.ts"],"sourcesContent":["export class TuiMockEvent<T> extends Event {\n constructor(type: string, options: CustomEventInit<T> & Record<string, any> = {}) {\n super(type, options);\n\n const event = new Event(type);\n\n for (const key in options) {\n if (options.hasOwnProperty(key)) {\n Object.defineProperty(event, key, {value: options[key]});\n }\n }\n\n // @ts-ignore\n return event;\n }\n}\n","import {SecurityContext} from '@angular/core';\nimport {TUI_SANITIZER} from '@taiga-ui/core';\n\nexport const TUI_SANITIZER_MOCK = {\n provide: TUI_SANITIZER,\n useValue: {\n sanitize(_context: SecurityContext, src: string) {\n // Skip error\n // WARNING: sanitizing HTML stripped some content, see\n // https://g.co/ng/security#xss\n return src;\n },\n },\n};\n","declare const global: Record<any, any> & Window;\n\nexport function tuiSwitchNgDevMode(enable: boolean): void {\n if (global) {\n global.ngDevMode = enable;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAM,MAAO,YAAgB,SAAQ,KAAK,CAAA;IACtC,WAAY,CAAA,IAAY,EAAE,OAAA,GAAoD,EAAE,EAAA;AAC5E,QAAA,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAErB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAE9B,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7B,gBAAA,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;AAC5D,aAAA;AACJ,SAAA;;AAGD,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;ACZY,MAAA,kBAAkB,GAAG;AAC9B,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE;QACN,QAAQ,CAAC,QAAyB,EAAE,GAAW,EAAA;;;;AAI3C,YAAA,OAAO,GAAG,CAAC;SACd;AACJ,KAAA;;;ACVC,SAAU,kBAAkB,CAAC,MAAe,EAAA;AAC9C,IAAA,IAAI,MAAM,EAAE;AACR,QAAA,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;AAC7B,KAAA;AACL;;ACNA;;AAEG;;;;"}
@@ -0,0 +1,122 @@
1
+ /// <reference types="jest" />
2
+ const { TextEncoder: TextEncoderMock, TextDecoder: TextDecoderMock } = require(`util`);
3
+ global.TextEncoder = TextEncoderMock;
4
+ global.TextDecoder = TextDecoderMock;
5
+ // @ts-ignore
6
+ global.document.execCommand = () => { };
7
+ // you can also pass the mock implementation
8
+ // to jest.fn as an argument
9
+ global.window.IntersectionObserver = jest.fn(() => ({
10
+ observe: jest.fn(),
11
+ unobserve: jest.fn(),
12
+ disconnect: jest.fn(),
13
+ }));
14
+ // Simulate window resize events
15
+ const resizeEvent = document.createEvent(`Event`);
16
+ resizeEvent.initEvent(`resize`, true, true);
17
+ global.window.resizeTo = width => {
18
+ global.window.innerWidth = width || global.window.innerWidth;
19
+ global.window.innerHeight = width || global.window.innerHeight;
20
+ global.window.dispatchEvent(resizeEvent);
21
+ };
22
+ global.URL.createObjectURL = jest.fn(blob => `${blob}`);
23
+ global.URL.revokeObjectURL = jest.fn();
24
+ Object.defineProperty(global.window, `CSS`, { value: null });
25
+ Object.defineProperty(global.window, `getComputedStyle`, {
26
+ value: () => ({
27
+ display: `none`,
28
+ appearance: [`-webkit-appearance`],
29
+ }),
30
+ });
31
+ Object.defineProperty(global.document, `doctype`, {
32
+ value: `<!DOCTYPE html>`,
33
+ });
34
+ Object.defineProperty(global.document.body.style, `transform`, {
35
+ value: () => ({
36
+ enumerable: true,
37
+ configurable: true,
38
+ }),
39
+ });
40
+ Object.defineProperty(global.window, `matchMedia`, {
41
+ writable: true,
42
+ value: jest.fn().mockImplementation(query => ({
43
+ matches: false,
44
+ media: query,
45
+ onchange: null,
46
+ addListener: jest.fn(),
47
+ removeListener: jest.fn(),
48
+ addEventListener: jest.fn(),
49
+ removeEventListener: jest.fn(),
50
+ dispatchEvent: jest.fn(),
51
+ })),
52
+ });
53
+ Object.defineProperty(global.document, `elementFromPoint`, {
54
+ writable: true,
55
+ value: jest.fn().mockImplementation(() => null),
56
+ });
57
+ Object.defineProperty(global.document, `createRange`, {
58
+ writable: true,
59
+ value: () => {
60
+ const range = new Range();
61
+ range.getBoundingClientRect = () => ({
62
+ x: 0,
63
+ y: 0,
64
+ bottom: 0,
65
+ height: 0,
66
+ left: 0,
67
+ right: 0,
68
+ top: 0,
69
+ width: 0,
70
+ toJSON: () => { },
71
+ });
72
+ range.getClientRects = () => ({
73
+ item: () => null,
74
+ length: 0,
75
+ [Symbol.iterator]: jest.fn(),
76
+ });
77
+ return range;
78
+ },
79
+ });
80
+ Object.defineProperty(window, `scrollTo`, jest.fn());
81
+ Object.defineProperty(global.window, `getComputedStyle`, {
82
+ value: () => ({
83
+ getPropertyValue: (_prop) => ``,
84
+ }),
85
+ });
86
+ global.DataTransfer = class {
87
+ constructor() {
88
+ this.data = new Map();
89
+ }
90
+ setData(format, data) {
91
+ this.data.set(format, data);
92
+ }
93
+ getData(format) {
94
+ return this.data.get(format);
95
+ }
96
+ };
97
+ class TransferMockEvent {
98
+ constructor(type, options) {
99
+ this.type = type;
100
+ this.options = options;
101
+ this.dataTransfer = options.clipboardData;
102
+ this.relatedTarget = options.relatedTarget;
103
+ }
104
+ }
105
+ global.DragEvent = TransferMockEvent;
106
+ global.ClipboardEvent = TransferMockEvent;
107
+ /**
108
+ * in our jest setupFilesAfterEnv file,
109
+ * however when running with ng test those
110
+ * imports are already done by angular
111
+ * resulting in duplicate imports
112
+ * and conflicts resulting in the above error
113
+ */
114
+ if (!(`Zone` in global)) {
115
+ require(`zone.js`);
116
+ require(`zone.js/testing`);
117
+ }
118
+
119
+ /**
120
+ * Generated bundle index. Do not edit.
121
+ */
122
+ //# sourceMappingURL=taiga-ui-testing-setup-jest.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-testing-setup-jest.mjs","sources":["../../../projects/testing/setup-jest/index.ts","../../../projects/testing/setup-jest/taiga-ui-testing-setup-jest.ts"],"sourcesContent":["/// <reference types=\"jest\" />\n\nconst {TextEncoder: TextEncoderMock, TextDecoder: TextDecoderMock} = require(`util`);\n\nglobal.TextEncoder = TextEncoderMock;\nglobal.TextDecoder = TextDecoderMock;\n\n// @ts-ignore\nglobal.document.execCommand = () => {};\n\n// you can also pass the mock implementation\n// to jest.fn as an argument\n(global.window as any).IntersectionObserver = jest.fn(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n}));\n\n// Simulate window resize events\nconst resizeEvent = document.createEvent(`Event`);\n\nresizeEvent.initEvent(`resize`, true, true);\n\nglobal.window.resizeTo = width => {\n (global.window as any).innerWidth = width || global.window.innerWidth;\n (global.window as any).innerHeight = width || global.window.innerHeight;\n global.window.dispatchEvent(resizeEvent);\n};\n\nglobal.URL.createObjectURL = jest.fn(blob => `${blob}`);\nglobal.URL.revokeObjectURL = jest.fn();\n\nObject.defineProperty(global.window, `CSS`, {value: null});\n\nObject.defineProperty(global.window, `getComputedStyle`, {\n value: () => ({\n display: `none`,\n appearance: [`-webkit-appearance`],\n }),\n});\n\nObject.defineProperty(global.document, `doctype`, {\n value: `<!DOCTYPE html>`,\n});\n\nObject.defineProperty(global.document.body.style, `transform`, {\n value: () => ({\n enumerable: true,\n configurable: true,\n }),\n});\n\nObject.defineProperty(global.window, `matchMedia`, {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(),\n removeListener: jest.fn(),\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n});\n\nObject.defineProperty(global.document, `elementFromPoint`, {\n writable: true,\n value: jest.fn().mockImplementation(() => null),\n});\n\nObject.defineProperty(global.document, `createRange`, {\n writable: true,\n value: () => {\n const range = new Range();\n\n range.getBoundingClientRect = () => ({\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n toJSON: () => {},\n });\n\n range.getClientRects = () => ({\n item: () => null,\n length: 0,\n [Symbol.iterator]: jest.fn(),\n });\n\n return range;\n },\n});\n\nObject.defineProperty(window, `scrollTo`, jest.fn());\n\nObject.defineProperty(global.window, `getComputedStyle`, {\n value: () => ({\n getPropertyValue: (_prop: string) => ``,\n }),\n});\n\nglobal.DataTransfer = class {\n private readonly data = new Map();\n\n setData(format: string, data: string): void {\n this.data.set(format, data);\n }\n\n getData(format: string): string {\n return this.data.get(format);\n }\n} as unknown as typeof DataTransfer;\n\nclass TransferMockEvent {\n dataTransfer: DataTransfer;\n relatedTarget: EventTarget;\n\n constructor(\n readonly type: string,\n readonly options: {\n clipboardData: DataTransfer;\n relatedTarget: EventTarget;\n },\n ) {\n this.dataTransfer = options.clipboardData;\n this.relatedTarget = options.relatedTarget;\n }\n}\n\nglobal.DragEvent = TransferMockEvent as unknown as typeof DragEvent;\nglobal.ClipboardEvent = TransferMockEvent as unknown as typeof ClipboardEvent;\n\n/**\n * in our jest setupFilesAfterEnv file,\n * however when running with ng test those\n * imports are already done by angular\n * resulting in duplicate imports\n * and conflicts resulting in the above error\n */\nif (!(`Zone` in global)) {\n require(`zone.js`);\n require(`zone.js/testing`);\n}\n\n// @note: build empty entry point\nexport {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}