@testspectra/cli 1.0.59 → 1.0.63

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 (312) hide show
  1. package/README.md +33 -32
  2. package/bin/testspectra-runner +0 -0
  3. package/dist/commands/add.js +7 -13
  4. package/dist/commands/init.js +23 -23
  5. package/dist/commands/run.d.ts +1 -0
  6. package/dist/commands/run.js +22 -13
  7. package/dist/index.js +1 -0
  8. package/dist/server/demo.d.ts +8 -0
  9. package/dist/server/demo.js +104 -0
  10. package/dist/types/generator.d.ts +1 -1
  11. package/dist/types/generator.js +50 -15
  12. package/package.json +2 -2
  13. package/templates/default/.cursorrules +18 -0
  14. package/templates/default/CLAUDE.md +9 -0
  15. package/templates/default/fixtures/playgroundData.json +7 -0
  16. package/templates/default/global-hooks/after/mobile.hook.ts +3 -0
  17. package/templates/default/global-hooks/after/web.hook.ts +3 -0
  18. package/templates/default/global-hooks/before/mobile.hook.ts +3 -0
  19. package/templates/default/global-hooks/before/web.hook.ts +3 -0
  20. package/templates/default/package.json +5 -1
  21. package/templates/default/page-objects/MatchersPage/mobile.ts +21 -0
  22. package/templates/default/page-objects/MatchersPage/web.ts +23 -0
  23. package/templates/default/page-objects/NavigationPage/mobile.ts +5 -0
  24. package/templates/default/page-objects/NavigationPage/web.ts +8 -0
  25. package/templates/default/page-objects/PlaygroundPage/mobile.ts +26 -0
  26. package/templates/default/page-objects/PlaygroundPage/web.ts +29 -0
  27. package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +3 -0
  28. package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/spec.md +12 -0
  29. package/templates/default/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +5 -0
  30. package/templates/default/specs/BrowserContext/hooks/after/mobile.hook.ts +1 -0
  31. package/templates/default/specs/BrowserContext/hooks/after/web.hook.ts +1 -0
  32. package/templates/default/specs/BrowserContext/hooks/afterEach/mobile.hook.ts +1 -0
  33. package/templates/default/specs/BrowserContext/hooks/afterEach/web.hook.ts +1 -0
  34. package/templates/default/specs/BrowserContext/hooks/before/mobile.hook.ts +1 -0
  35. package/templates/default/specs/BrowserContext/hooks/before/web.hook.ts +1 -0
  36. package/templates/default/specs/BrowserContext/hooks/beforeEach/mobile.hook.ts +1 -0
  37. package/templates/default/specs/BrowserContext/hooks/beforeEach/web.hook.ts +1 -0
  38. package/templates/default/specs/BrowserContext/suite.md +9 -0
  39. package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +3 -0
  40. package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/spec.md +12 -0
  41. package/templates/default/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +7 -0
  42. package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +3 -0
  43. package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/spec.md +12 -0
  44. package/templates/default/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +6 -0
  45. package/templates/default/specs/ContentMatchers/hooks/after/mobile.hook.ts +1 -0
  46. package/templates/default/specs/ContentMatchers/hooks/after/web.hook.ts +1 -0
  47. package/templates/default/specs/ContentMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  48. package/templates/default/specs/ContentMatchers/hooks/afterEach/web.hook.ts +1 -0
  49. package/templates/default/specs/ContentMatchers/hooks/before/mobile.hook.ts +1 -0
  50. package/templates/default/specs/ContentMatchers/hooks/before/web.hook.ts +1 -0
  51. package/templates/default/specs/ContentMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  52. package/templates/default/specs/ContentMatchers/hooks/beforeEach/web.hook.ts +1 -0
  53. package/templates/default/specs/ContentMatchers/suite.md +9 -0
  54. package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +3 -0
  55. package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/spec.md +12 -0
  56. package/templates/default/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +5 -0
  57. package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +3 -0
  58. package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/spec.md +12 -0
  59. package/templates/default/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +8 -0
  60. package/templates/default/specs/ElementMatchers/hooks/after/mobile.hook.ts +1 -0
  61. package/templates/default/specs/ElementMatchers/hooks/after/web.hook.ts +1 -0
  62. package/templates/default/specs/ElementMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  63. package/templates/default/specs/ElementMatchers/hooks/afterEach/web.hook.ts +1 -0
  64. package/templates/default/specs/ElementMatchers/hooks/before/mobile.hook.ts +1 -0
  65. package/templates/default/specs/ElementMatchers/hooks/before/web.hook.ts +1 -0
  66. package/templates/default/specs/ElementMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  67. package/templates/default/specs/ElementMatchers/hooks/beforeEach/web.hook.ts +1 -0
  68. package/templates/default/specs/ElementMatchers/suite.md +9 -0
  69. package/templates/default/specs/Playground/TC-0001-form-controls/mobile.test.ts +3 -0
  70. package/templates/default/specs/Playground/TC-0001-form-controls/spec.md +12 -0
  71. package/templates/default/specs/Playground/TC-0001-form-controls/web.test.ts +6 -0
  72. package/templates/default/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +3 -0
  73. package/templates/default/specs/Playground/TC-0002-toggle-elements/spec.md +12 -0
  74. package/templates/default/specs/Playground/TC-0002-toggle-elements/web.test.ts +6 -0
  75. package/templates/default/specs/Playground/hooks/after/mobile.hook.ts +1 -0
  76. package/templates/default/specs/Playground/hooks/after/web.hook.ts +1 -0
  77. package/templates/default/specs/Playground/hooks/afterEach/mobile.hook.ts +1 -0
  78. package/templates/default/specs/Playground/hooks/afterEach/web.hook.ts +1 -0
  79. package/templates/default/specs/Playground/hooks/before/mobile.hook.ts +1 -0
  80. package/templates/default/specs/Playground/hooks/before/web.hook.ts +1 -0
  81. package/templates/default/specs/Playground/hooks/beforeEach/mobile.hook.ts +1 -0
  82. package/templates/default/specs/Playground/hooks/beforeEach/web.hook.ts +1 -0
  83. package/templates/default/specs/Playground/suite.md +9 -0
  84. package/templates/default/spectra.config.ts +1 -1
  85. package/templates/default/support/actions/fillCredentials/mobile.action.ts +4 -0
  86. package/templates/default/support/actions/fillCredentials/web.action.ts +4 -0
  87. package/templates/default/support/steps/togglePlaygroundStates/mobile.step.ts +3 -0
  88. package/templates/default/support/steps/togglePlaygroundStates/step.md +7 -0
  89. package/templates/default/support/steps/togglePlaygroundStates/web.step.ts +5 -0
  90. package/templates/default/support/steps/verifyPlaygroundState/mobile.step.ts +4 -0
  91. package/templates/default/support/steps/verifyPlaygroundState/step.md +7 -0
  92. package/templates/default/support/steps/verifyPlaygroundState/web.step.ts +6 -0
  93. package/templates/default/tsconfig.spectra.android.json +7 -4
  94. package/templates/default/tsconfig.spectra.ios.json +7 -4
  95. package/templates/default/tsconfig.spectra.web.json +10 -6
  96. package/templates/nx/.cursorrules +18 -0
  97. package/templates/nx/CLAUDE.md +10 -0
  98. package/templates/nx/fixtures/playgroundData.json +7 -0
  99. package/templates/nx/global-hooks/after/mobile.hook.ts +3 -0
  100. package/templates/nx/global-hooks/after/web.hook.ts +3 -0
  101. package/templates/nx/global-hooks/before/mobile.hook.ts +3 -0
  102. package/templates/nx/global-hooks/before/web.hook.ts +3 -0
  103. package/templates/nx/package.json +1 -1
  104. package/templates/nx/{modules/auth → packages/matchers}/e2e/project.json +8 -5
  105. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +3 -0
  106. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/TC-0007-title-and-navigation/spec.md +12 -0
  107. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +5 -0
  108. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/after/mobile.hook.ts +1 -0
  109. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/after/web.hook.ts +1 -0
  110. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/afterEach/mobile.hook.ts +1 -0
  111. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/afterEach/web.hook.ts +1 -0
  112. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/before/mobile.hook.ts +1 -0
  113. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/before/web.hook.ts +1 -0
  114. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/beforeEach/mobile.hook.ts +1 -0
  115. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/hooks/beforeEach/web.hook.ts +1 -0
  116. package/templates/nx/packages/matchers/e2e/specs/BrowserContext/suite.md +9 -0
  117. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +3 -0
  118. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0005-text-and-values/spec.md +12 -0
  119. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +7 -0
  120. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +3 -0
  121. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0006-collections-and-empty/spec.md +12 -0
  122. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +6 -0
  123. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/after/mobile.hook.ts +1 -0
  124. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/after/web.hook.ts +1 -0
  125. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  126. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/afterEach/web.hook.ts +1 -0
  127. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/before/mobile.hook.ts +1 -0
  128. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/before/web.hook.ts +1 -0
  129. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  130. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/hooks/beforeEach/web.hook.ts +1 -0
  131. package/templates/nx/packages/matchers/e2e/specs/ContentMatchers/suite.md +9 -0
  132. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +3 -0
  133. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0003-visibility-and-dom/spec.md +12 -0
  134. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +5 -0
  135. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +3 -0
  136. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0004-states-and-attributes/spec.md +12 -0
  137. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +8 -0
  138. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/after/mobile.hook.ts +1 -0
  139. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/after/web.hook.ts +1 -0
  140. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  141. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/afterEach/web.hook.ts +1 -0
  142. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/before/mobile.hook.ts +1 -0
  143. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/before/web.hook.ts +1 -0
  144. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  145. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/hooks/beforeEach/web.hook.ts +1 -0
  146. package/templates/nx/packages/matchers/e2e/specs/ElementMatchers/suite.md +9 -0
  147. package/templates/nx/packages/playground/e2e/project.json +37 -0
  148. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0001-form-controls/mobile.test.ts +3 -0
  149. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0001-form-controls/spec.md +12 -0
  150. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0001-form-controls/web.test.ts +6 -0
  151. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +3 -0
  152. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0002-toggle-elements/spec.md +12 -0
  153. package/templates/nx/packages/playground/e2e/specs/Playground/TC-0002-toggle-elements/web.test.ts +6 -0
  154. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/after/mobile.hook.ts +1 -0
  155. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/after/web.hook.ts +1 -0
  156. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/afterEach/mobile.hook.ts +1 -0
  157. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/afterEach/web.hook.ts +1 -0
  158. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/before/mobile.hook.ts +1 -0
  159. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/before/web.hook.ts +1 -0
  160. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/beforeEach/mobile.hook.ts +1 -0
  161. package/templates/nx/packages/playground/e2e/specs/Playground/hooks/beforeEach/web.hook.ts +1 -0
  162. package/templates/nx/packages/playground/e2e/specs/Playground/suite.md +9 -0
  163. package/templates/nx/page-objects/MatchersPage/mobile.ts +21 -0
  164. package/templates/nx/page-objects/MatchersPage/web.ts +23 -0
  165. package/templates/nx/page-objects/NavigationPage/mobile.ts +5 -0
  166. package/templates/nx/page-objects/NavigationPage/web.ts +8 -0
  167. package/templates/nx/page-objects/PlaygroundPage/mobile.ts +26 -0
  168. package/templates/nx/page-objects/PlaygroundPage/web.ts +29 -0
  169. package/templates/nx/shared/testing/fixtures/playgroundData.json +7 -0
  170. package/templates/nx/shared/testing/global-hooks/after/mobile.hook.ts +3 -0
  171. package/templates/nx/shared/testing/global-hooks/after/web.hook.ts +3 -0
  172. package/templates/nx/shared/testing/global-hooks/before/mobile.hook.ts +3 -0
  173. package/templates/nx/shared/testing/global-hooks/before/web.hook.ts +3 -0
  174. package/templates/nx/shared/testing/page-objects/MatchersPage/mobile.ts +21 -0
  175. package/templates/nx/shared/testing/page-objects/MatchersPage/web.ts +23 -0
  176. package/templates/nx/shared/testing/page-objects/NavigationPage/mobile.ts +5 -0
  177. package/templates/nx/shared/testing/page-objects/NavigationPage/web.ts +8 -0
  178. package/templates/nx/shared/testing/page-objects/PlaygroundPage/mobile.ts +26 -0
  179. package/templates/nx/shared/testing/page-objects/PlaygroundPage/web.ts +29 -0
  180. package/templates/nx/shared/testing/support/actions/fillCredentials/mobile.action.ts +4 -0
  181. package/templates/nx/shared/testing/support/actions/fillCredentials/web.action.ts +4 -0
  182. package/templates/nx/shared/testing/support/steps/togglePlaygroundStates/mobile.step.ts +3 -0
  183. package/templates/nx/shared/testing/support/steps/togglePlaygroundStates/step.md +7 -0
  184. package/templates/nx/shared/testing/support/steps/togglePlaygroundStates/web.step.ts +5 -0
  185. package/templates/nx/shared/testing/support/steps/verifyPlaygroundState/mobile.step.ts +4 -0
  186. package/templates/nx/shared/testing/support/steps/verifyPlaygroundState/step.md +7 -0
  187. package/templates/nx/shared/testing/support/steps/verifyPlaygroundState/web.step.ts +6 -0
  188. package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/mobile.test.ts +3 -0
  189. package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/spec.md +12 -0
  190. package/templates/nx/specs/BrowserContext/TC-0007-title-and-navigation/web.test.ts +5 -0
  191. package/templates/nx/specs/BrowserContext/hooks/after/mobile.hook.ts +1 -0
  192. package/templates/nx/specs/BrowserContext/hooks/after/web.hook.ts +1 -0
  193. package/templates/nx/specs/BrowserContext/hooks/afterEach/mobile.hook.ts +1 -0
  194. package/templates/nx/specs/BrowserContext/hooks/afterEach/web.hook.ts +1 -0
  195. package/templates/nx/specs/BrowserContext/hooks/before/mobile.hook.ts +1 -0
  196. package/templates/nx/specs/BrowserContext/hooks/before/web.hook.ts +1 -0
  197. package/templates/nx/specs/BrowserContext/hooks/beforeEach/mobile.hook.ts +1 -0
  198. package/templates/nx/specs/BrowserContext/hooks/beforeEach/web.hook.ts +1 -0
  199. package/templates/nx/specs/BrowserContext/suite.md +9 -0
  200. package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/mobile.test.ts +3 -0
  201. package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/spec.md +12 -0
  202. package/templates/nx/specs/ContentMatchers/TC-0005-text-and-values/web.test.ts +7 -0
  203. package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/mobile.test.ts +3 -0
  204. package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/spec.md +12 -0
  205. package/templates/nx/specs/ContentMatchers/TC-0006-collections-and-empty/web.test.ts +6 -0
  206. package/templates/nx/specs/ContentMatchers/hooks/after/mobile.hook.ts +1 -0
  207. package/templates/nx/specs/ContentMatchers/hooks/after/web.hook.ts +1 -0
  208. package/templates/nx/specs/ContentMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  209. package/templates/nx/specs/ContentMatchers/hooks/afterEach/web.hook.ts +1 -0
  210. package/templates/nx/specs/ContentMatchers/hooks/before/mobile.hook.ts +1 -0
  211. package/templates/nx/specs/ContentMatchers/hooks/before/web.hook.ts +1 -0
  212. package/templates/nx/specs/ContentMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  213. package/templates/nx/specs/ContentMatchers/hooks/beforeEach/web.hook.ts +1 -0
  214. package/templates/nx/specs/ContentMatchers/suite.md +9 -0
  215. package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/mobile.test.ts +3 -0
  216. package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/spec.md +12 -0
  217. package/templates/nx/specs/ElementMatchers/TC-0003-visibility-and-dom/web.test.ts +5 -0
  218. package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/mobile.test.ts +3 -0
  219. package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/spec.md +12 -0
  220. package/templates/nx/specs/ElementMatchers/TC-0004-states-and-attributes/web.test.ts +8 -0
  221. package/templates/nx/specs/ElementMatchers/hooks/after/mobile.hook.ts +1 -0
  222. package/templates/nx/specs/ElementMatchers/hooks/after/web.hook.ts +1 -0
  223. package/templates/nx/specs/ElementMatchers/hooks/afterEach/mobile.hook.ts +1 -0
  224. package/templates/nx/specs/ElementMatchers/hooks/afterEach/web.hook.ts +1 -0
  225. package/templates/nx/specs/ElementMatchers/hooks/before/mobile.hook.ts +1 -0
  226. package/templates/nx/specs/ElementMatchers/hooks/before/web.hook.ts +1 -0
  227. package/templates/nx/specs/ElementMatchers/hooks/beforeEach/mobile.hook.ts +1 -0
  228. package/templates/nx/specs/ElementMatchers/hooks/beforeEach/web.hook.ts +1 -0
  229. package/templates/nx/specs/ElementMatchers/suite.md +9 -0
  230. package/templates/nx/specs/Playground/TC-0001-form-controls/mobile.test.ts +3 -0
  231. package/templates/nx/specs/Playground/TC-0001-form-controls/spec.md +12 -0
  232. package/templates/nx/specs/Playground/TC-0001-form-controls/web.test.ts +6 -0
  233. package/templates/nx/specs/Playground/TC-0002-toggle-elements/mobile.test.ts +3 -0
  234. package/templates/nx/specs/Playground/TC-0002-toggle-elements/spec.md +12 -0
  235. package/templates/nx/specs/Playground/TC-0002-toggle-elements/web.test.ts +6 -0
  236. package/templates/nx/specs/Playground/hooks/after/mobile.hook.ts +1 -0
  237. package/templates/nx/specs/Playground/hooks/after/web.hook.ts +1 -0
  238. package/templates/nx/specs/Playground/hooks/afterEach/mobile.hook.ts +1 -0
  239. package/templates/nx/specs/Playground/hooks/afterEach/web.hook.ts +1 -0
  240. package/templates/nx/specs/Playground/hooks/before/mobile.hook.ts +1 -0
  241. package/templates/nx/specs/Playground/hooks/before/web.hook.ts +1 -0
  242. package/templates/nx/specs/Playground/hooks/beforeEach/mobile.hook.ts +1 -0
  243. package/templates/nx/specs/Playground/hooks/beforeEach/web.hook.ts +1 -0
  244. package/templates/nx/specs/Playground/suite.md +9 -0
  245. package/templates/nx/spectra.config.ts +1 -1
  246. package/templates/nx/support/actions/fillCredentials/mobile.action.ts +4 -0
  247. package/templates/nx/support/actions/fillCredentials/web.action.ts +4 -0
  248. package/templates/nx/support/steps/togglePlaygroundStates/mobile.step.ts +3 -0
  249. package/templates/nx/support/steps/togglePlaygroundStates/step.md +7 -0
  250. package/templates/nx/support/steps/togglePlaygroundStates/web.step.ts +5 -0
  251. package/templates/nx/support/steps/verifyPlaygroundState/mobile.step.ts +4 -0
  252. package/templates/nx/support/steps/verifyPlaygroundState/step.md +7 -0
  253. package/templates/nx/support/steps/verifyPlaygroundState/web.step.ts +6 -0
  254. package/templates/default/actions/applyDiscount/mobile.action.ts +0 -6
  255. package/templates/default/actions/applyDiscount/web.action.ts +0 -6
  256. package/templates/default/actions/verifyOtp/mobile.action.ts +0 -6
  257. package/templates/default/actions/verifyOtp/web.action.ts +0 -6
  258. package/templates/default/fixtures/couponCode.json +0 -1
  259. package/templates/default/fixtures/searchQuery.json +0 -1
  260. package/templates/default/fixtures/userData.json +0 -1
  261. package/templates/default/global-hooks/before.web.hook.ts +0 -4
  262. package/templates/default/page-objects/LoginPage/mobile.ts +0 -32
  263. package/templates/default/page-objects/LoginPage/web.ts +0 -32
  264. package/templates/default/page-objects/ProductPage/mobile.ts +0 -39
  265. package/templates/default/page-objects/ProductPage/web.ts +0 -38
  266. package/templates/default/page-objects/SettingsPage/common.ts +0 -26
  267. package/templates/default/specs/Auth/TC-AUTH-01/android.test.ts +0 -6
  268. package/templates/default/specs/Auth/TC-AUTH-01/ios.test.ts +0 -6
  269. package/templates/default/specs/Auth/TC-AUTH-01/web.test.ts +0 -13
  270. package/templates/default/specs/Auth/TC-AUTH-02/android.test.ts +0 -5
  271. package/templates/default/specs/Auth/TC-AUTH-02/web.test.ts +0 -5
  272. package/templates/default/specs/Auth/hooks/before.android.hook.ts +0 -3
  273. package/templates/default/specs/Auth/hooks/before.ios.hook.ts +0 -3
  274. package/templates/default/specs/Auth/hooks/before.web.hook.ts +0 -3
  275. package/templates/default/specs/Product/TC-PROD-01/mobile.test.ts +0 -8
  276. package/templates/default/specs/Product/TC-PROD-01/web.test.ts +0 -8
  277. package/templates/default/specs/Product/TC-PROD-02/mobile.test.ts +0 -6
  278. package/templates/default/specs/Product/TC-PROD-02/web.test.ts +0 -6
  279. package/templates/default/specs/Product/hooks/before.web.hook.ts +0 -3
  280. package/templates/default/specs/Settings/TC-SET-01/common.test.ts +0 -8
  281. package/templates/default/steps/loginUser/mobile.step.ts +0 -4
  282. package/templates/default/steps/loginUser/web.step.ts +0 -4
  283. package/templates/default/steps/searchProduct/mobile.step.ts +0 -5
  284. package/templates/default/steps/searchProduct/web.step.ts +0 -5
  285. package/templates/nx/modules/auth/e2e/actions/verifyOtp/mobile.action.ts +0 -6
  286. package/templates/nx/modules/auth/e2e/actions/verifyOtp/web.action.ts +0 -6
  287. package/templates/nx/modules/auth/e2e/fixtures/userData.json +0 -1
  288. package/templates/nx/modules/auth/e2e/global-hooks/before.web.hook.ts +0 -4
  289. package/templates/nx/modules/auth/e2e/package.json +0 -19
  290. package/templates/nx/modules/auth/e2e/page-objects/LoginPage/mobile.ts +0 -32
  291. package/templates/nx/modules/auth/e2e/page-objects/LoginPage/web.ts +0 -32
  292. package/templates/nx/modules/auth/e2e/page-objects/SettingsPage/common.ts +0 -26
  293. package/templates/nx/modules/auth/e2e/specs/Auth/TC-AUTH-01/android.test.ts +0 -6
  294. package/templates/nx/modules/auth/e2e/specs/Auth/TC-AUTH-01/ios.test.ts +0 -6
  295. package/templates/nx/modules/auth/e2e/specs/Auth/TC-AUTH-01/web.test.ts +0 -19
  296. package/templates/nx/modules/auth/e2e/specs/Auth/TC-AUTH-02/android.test.ts +0 -5
  297. package/templates/nx/modules/auth/e2e/specs/Auth/TC-AUTH-02/web.test.ts +0 -5
  298. package/templates/nx/modules/auth/e2e/specs/Auth/hooks/before.android.hook.ts +0 -3
  299. package/templates/nx/modules/auth/e2e/specs/Auth/hooks/before.ios.hook.ts +0 -3
  300. package/templates/nx/modules/auth/e2e/specs/Auth/hooks/before.web.hook.ts +0 -3
  301. package/templates/nx/modules/auth/e2e/specs/Settings/TC-SET-01/common.test.ts +0 -8
  302. package/templates/nx/modules/auth/e2e/steps/loginUser/mobile.step.ts +0 -4
  303. package/templates/nx/modules/auth/e2e/steps/loginUser/web.step.ts +0 -4
  304. package/templates/nx/modules/auth/package.json +0 -7
  305. package/templates/nx/modules/auth/src/index.ts +0 -3
  306. package/templates/nx/modules/catalog/package.json +0 -7
  307. package/templates/nx/modules/catalog/src/index.ts +0 -6
  308. package/templates/nx/shared/testing/actions/dismissBanner/common.action.ts +0 -6
  309. package/templates/nx/shared/testing/fixtures/appConfig.json +0 -4
  310. package/templates/nx/shared/testing/package.json +0 -8
  311. package/templates/nx/shared/testing/page-objects/NavigationBar/common.ts +0 -13
  312. package/templates/nx/shared/testing/steps/loginAsAdmin/common.step.ts +0 -4
@@ -0,0 +1,23 @@
1
+ export class MatchersPage {
2
+ get visibleElement() { return Spectra.get("#demo-visible-el"); }
3
+ get hiddenElement() { return Spectra.get("#demo-hidden-el"); }
4
+ get existingElement() { return Spectra.get("#demo-existing-el"); }
5
+ get submitButton() { return Spectra.get("#demo-submit-btn"); }
6
+ get disabledButton() { return Spectra.get("#demo-disabled-btn"); }
7
+ get checkbox() { return Spectra.get("#demo-checkbox"); }
8
+ get radio() { return Spectra.get("#demo-radio"); }
9
+ get emailInput() { return Spectra.get("#demo-email-input"); }
10
+ get tokenInput() { return Spectra.get("#demo-token-input"); }
11
+ get exactText() { return Spectra.get("#demo-exact-text"); }
12
+ get partialText() { return Spectra.get("#demo-partial-text"); }
13
+ get activeTab() { return Spectra.get("#demo-active-tab"); }
14
+ get navLink() { return Spectra.get("#demo-nav-link"); }
15
+ get productCards() { return Spectra.getAll(".demo-product-card"); }
16
+ get emptyList() { return Spectra.getAll("#demo-empty-list > *"); }
17
+
18
+ async open(section = "") {
19
+ await browser.url("/" + (section ? "#" + section : ""));
20
+ }
21
+ }
22
+
23
+ export default new MatchersPage();
@@ -0,0 +1,5 @@
1
+ export class NavigationPage {
2
+ get sidebarLinks() { return Spectra.getAll("~sidebar_link"); }
3
+ }
4
+
5
+ export default new NavigationPage();
@@ -0,0 +1,8 @@
1
+ export class NavigationPage {
2
+ get sidebarLinks() { return Spectra.getAll("aside a"); }
3
+ get overviewLink() { return Spectra.get("aside a[href='#overview']"); }
4
+ get visibilityLink() { return Spectra.get("aside a[href='#visibility']"); }
5
+ get playgroundLink() { return Spectra.get("aside a[href='#playground']"); }
6
+ }
7
+
8
+ export default new NavigationPage();
@@ -0,0 +1,26 @@
1
+ export class PlaygroundPage {
2
+ get visibleElement() { return Spectra.get("~visible_element"); }
3
+ get hiddenElement() { return Spectra.get("~hidden_element"); }
4
+ get existingElement() { return Spectra.get("~existing_element"); }
5
+ get removedElement() { return Spectra.get("~removed_element"); }
6
+ get enabledButton() { return Spectra.get("~enabled_button"); }
7
+ get disabledButton() { return Spectra.get("~disabled_button"); }
8
+ get termsCheckbox() { return Spectra.get("~terms_checkbox"); }
9
+ get modeRadio() { return Spectra.get("~mode_radio"); }
10
+ get emailInput() { return Spectra.get("~email_input"); }
11
+ get tokenInput() { return Spectra.get("~token_input"); }
12
+ get exactText() { return Spectra.get("~exact_text"); }
13
+ get partialText() { return Spectra.get("~partial_text"); }
14
+ get activeTab() { return Spectra.get("~active_tab"); }
15
+ get navLink() { return Spectra.get("~nav_link"); }
16
+ get productItems() { return Spectra.getAll("~product_item"); }
17
+ get emptyList() { return Spectra.getAll("~empty_list"); }
18
+
19
+ async open() {}
20
+ async fillCredentials(email = Fixture.playgroundData.defaultEmail, token = Fixture.playgroundData.defaultToken) {
21
+ await this.emailInput.type(email);
22
+ await this.tokenInput.type(token);
23
+ }
24
+ }
25
+
26
+ export default new PlaygroundPage();
@@ -0,0 +1,29 @@
1
+ export class PlaygroundPage {
2
+ get visibleElement() { return Spectra.get("#demo-visible-el-pg"); }
3
+ get hiddenElement() { return Spectra.get("#demo-hidden-el-pg"); }
4
+ get existingElement() { return Spectra.get("#demo-existing-el-pg"); }
5
+ get removedElement() { return Spectra.get("#demo-removed-el-pg"); }
6
+ get enabledButton() { return Spectra.get("#demo-enabled-btn"); }
7
+ get disabledButton() { return Spectra.get("#demo-disabled-btn-pg"); }
8
+ get termsCheckbox() { return Spectra.get("#demo-terms-checkbox"); }
9
+ get modeRadio() { return Spectra.get("#demo-mode-radio"); }
10
+ get emailInput() { return Spectra.get("#demo-email-input-pg"); }
11
+ get tokenInput() { return Spectra.get("#demo-token-input-pg"); }
12
+ get exactText() { return Spectra.get("#demo-exact-text-pg"); }
13
+ get partialText() { return Spectra.get("#demo-partial-text-pg"); }
14
+ get activeTab() { return Spectra.get("#demo-active-tab-pg"); }
15
+ get navLink() { return Spectra.get("#demo-nav-link-pg"); }
16
+ get productItems() { return Spectra.getAll(".demo-product-item"); }
17
+ get emptyList() { return Spectra.getAll("#demo-empty-list-pg > *"); }
18
+
19
+ async open() {
20
+ await browser.url("/#playground");
21
+ }
22
+
23
+ async fillCredentials(email = Fixture.playgroundData.defaultEmail, token = Fixture.playgroundData.defaultToken) {
24
+ await this.emailInput.type(email);
25
+ await this.tokenInput.type(token);
26
+ }
27
+ }
28
+
29
+ export default new PlaygroundPage();
@@ -0,0 +1,7 @@
1
+ {
2
+ "defaultEmail": "admin@testspectra.dev",
3
+ "defaultToken": "JWT_abc123xyz",
4
+ "pageTitle": "TestSpectra — Matchers API Reference",
5
+ "welcomeText": "Welcome to TestSpectra",
6
+ "dashboardHref": "/dashboard"
7
+ }
@@ -0,0 +1,3 @@
1
+ export default async function () {
2
+ // Global mobile teardown
3
+ }
@@ -0,0 +1,3 @@
1
+ export default async function () {
2
+ // Global web teardown
3
+ }
@@ -0,0 +1,3 @@
1
+ export default async function () {
2
+ // Global mobile initialization
3
+ }
@@ -0,0 +1,3 @@
1
+ export default async function () {
2
+ // Global web initialization
3
+ }
@@ -0,0 +1,21 @@
1
+ export class MatchersPage {
2
+ get visibleElement() { return Spectra.get("~visible_element"); }
3
+ get hiddenElement() { return Spectra.get("~hidden_element"); }
4
+ get existingElement() { return Spectra.get("~existing_element"); }
5
+ get submitButton() { return Spectra.get("~submit_button"); }
6
+ get disabledButton() { return Spectra.get("~disabled_button"); }
7
+ get checkbox() { return Spectra.get("~checkbox"); }
8
+ get radio() { return Spectra.get("~radio"); }
9
+ get emailInput() { return Spectra.get("~email_input"); }
10
+ get tokenInput() { return Spectra.get("~token_input"); }
11
+ get exactText() { return Spectra.get("~exact_text"); }
12
+ get partialText() { return Spectra.get("~partial_text"); }
13
+ get activeTab() { return Spectra.get("~active_tab"); }
14
+ get navLink() { return Spectra.get("~nav_link"); }
15
+ get productCards() { return Spectra.getAll("~product_card"); }
16
+ get emptyList() { return Spectra.getAll("~empty_list"); }
17
+
18
+ async open(_section = "") {}
19
+ }
20
+
21
+ export default new MatchersPage();
@@ -0,0 +1,23 @@
1
+ export class MatchersPage {
2
+ get visibleElement() { return Spectra.get("#demo-visible-el"); }
3
+ get hiddenElement() { return Spectra.get("#demo-hidden-el"); }
4
+ get existingElement() { return Spectra.get("#demo-existing-el"); }
5
+ get submitButton() { return Spectra.get("#demo-submit-btn"); }
6
+ get disabledButton() { return Spectra.get("#demo-disabled-btn"); }
7
+ get checkbox() { return Spectra.get("#demo-checkbox"); }
8
+ get radio() { return Spectra.get("#demo-radio"); }
9
+ get emailInput() { return Spectra.get("#demo-email-input"); }
10
+ get tokenInput() { return Spectra.get("#demo-token-input"); }
11
+ get exactText() { return Spectra.get("#demo-exact-text"); }
12
+ get partialText() { return Spectra.get("#demo-partial-text"); }
13
+ get activeTab() { return Spectra.get("#demo-active-tab"); }
14
+ get navLink() { return Spectra.get("#demo-nav-link"); }
15
+ get productCards() { return Spectra.getAll(".demo-product-card"); }
16
+ get emptyList() { return Spectra.getAll("#demo-empty-list > *"); }
17
+
18
+ async open(section = "") {
19
+ await browser.url("/" + (section ? "#" + section : ""));
20
+ }
21
+ }
22
+
23
+ export default new MatchersPage();
@@ -0,0 +1,5 @@
1
+ export class NavigationPage {
2
+ get sidebarLinks() { return Spectra.getAll("~sidebar_link"); }
3
+ }
4
+
5
+ export default new NavigationPage();
@@ -0,0 +1,8 @@
1
+ export class NavigationPage {
2
+ get sidebarLinks() { return Spectra.getAll("aside a"); }
3
+ get overviewLink() { return Spectra.get("aside a[href='#overview']"); }
4
+ get visibilityLink() { return Spectra.get("aside a[href='#visibility']"); }
5
+ get playgroundLink() { return Spectra.get("aside a[href='#playground']"); }
6
+ }
7
+
8
+ export default new NavigationPage();
@@ -0,0 +1,26 @@
1
+ export class PlaygroundPage {
2
+ get visibleElement() { return Spectra.get("~visible_element"); }
3
+ get hiddenElement() { return Spectra.get("~hidden_element"); }
4
+ get existingElement() { return Spectra.get("~existing_element"); }
5
+ get removedElement() { return Spectra.get("~removed_element"); }
6
+ get enabledButton() { return Spectra.get("~enabled_button"); }
7
+ get disabledButton() { return Spectra.get("~disabled_button"); }
8
+ get termsCheckbox() { return Spectra.get("~terms_checkbox"); }
9
+ get modeRadio() { return Spectra.get("~mode_radio"); }
10
+ get emailInput() { return Spectra.get("~email_input"); }
11
+ get tokenInput() { return Spectra.get("~token_input"); }
12
+ get exactText() { return Spectra.get("~exact_text"); }
13
+ get partialText() { return Spectra.get("~partial_text"); }
14
+ get activeTab() { return Spectra.get("~active_tab"); }
15
+ get navLink() { return Spectra.get("~nav_link"); }
16
+ get productItems() { return Spectra.getAll("~product_item"); }
17
+ get emptyList() { return Spectra.getAll("~empty_list"); }
18
+
19
+ async open() {}
20
+ async fillCredentials(email = Fixture.playgroundData.defaultEmail, token = Fixture.playgroundData.defaultToken) {
21
+ await this.emailInput.type(email);
22
+ await this.tokenInput.type(token);
23
+ }
24
+ }
25
+
26
+ export default new PlaygroundPage();
@@ -0,0 +1,29 @@
1
+ export class PlaygroundPage {
2
+ get visibleElement() { return Spectra.get("#demo-visible-el-pg"); }
3
+ get hiddenElement() { return Spectra.get("#demo-hidden-el-pg"); }
4
+ get existingElement() { return Spectra.get("#demo-existing-el-pg"); }
5
+ get removedElement() { return Spectra.get("#demo-removed-el-pg"); }
6
+ get enabledButton() { return Spectra.get("#demo-enabled-btn"); }
7
+ get disabledButton() { return Spectra.get("#demo-disabled-btn-pg"); }
8
+ get termsCheckbox() { return Spectra.get("#demo-terms-checkbox"); }
9
+ get modeRadio() { return Spectra.get("#demo-mode-radio"); }
10
+ get emailInput() { return Spectra.get("#demo-email-input-pg"); }
11
+ get tokenInput() { return Spectra.get("#demo-token-input-pg"); }
12
+ get exactText() { return Spectra.get("#demo-exact-text-pg"); }
13
+ get partialText() { return Spectra.get("#demo-partial-text-pg"); }
14
+ get activeTab() { return Spectra.get("#demo-active-tab-pg"); }
15
+ get navLink() { return Spectra.get("#demo-nav-link-pg"); }
16
+ get productItems() { return Spectra.getAll(".demo-product-item"); }
17
+ get emptyList() { return Spectra.getAll("#demo-empty-list-pg > *"); }
18
+
19
+ async open() {
20
+ await browser.url("/#playground");
21
+ }
22
+
23
+ async fillCredentials(email = Fixture.playgroundData.defaultEmail, token = Fixture.playgroundData.defaultToken) {
24
+ await this.emailInput.type(email);
25
+ await this.tokenInput.type(token);
26
+ }
27
+ }
28
+
29
+ export default new PlaygroundPage();
@@ -0,0 +1,4 @@
1
+ export default async function fillCredentials(this: any, email: string, token: string) {
2
+ await this.get("~email_input").type(email);
3
+ await this.get("~token_input").type(token);
4
+ }
@@ -0,0 +1,4 @@
1
+ export default async function fillCredentials(this: any, email: string, token: string) {
2
+ await this.get("#demo-email-input-pg").type(email);
3
+ await this.get("#demo-token-input-pg").type(token);
4
+ }
@@ -0,0 +1,3 @@
1
+ export default async function togglePlaygroundStates() {
2
+ await PlaygroundPage.open();
3
+ }
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: step-togglePlaygroundStates
3
+ name: Toggle Playground States
4
+ description: Toggles hidden/removed elements and verifies dynamic states
5
+ ---
6
+
7
+ # Step: Toggle Playground States
@@ -0,0 +1,5 @@
1
+ export default async function togglePlaygroundStates() {
2
+ await PlaygroundPage.open();
3
+ await PlaygroundPage.hiddenElement.should("be.visible");
4
+ await PlaygroundPage.existingElement.should("exist");
5
+ }
@@ -0,0 +1,4 @@
1
+ export default async function verifyPlaygroundState() {
2
+ await PlaygroundPage.open();
3
+ await PlaygroundPage.visibleElement.should("be.visible");
4
+ }
@@ -0,0 +1,7 @@
1
+ ---
2
+ id: step-verifyPlaygroundState
3
+ name: Verify Playground State
4
+ description: Verifies default form values and matcher element states on demo web app
5
+ ---
6
+
7
+ # Step: Verify Playground State
@@ -0,0 +1,6 @@
1
+ export default async function verifyPlaygroundState() {
2
+ await PlaygroundPage.open();
3
+ await PlaygroundPage.visibleElement.should("be.visible");
4
+ await PlaygroundPage.enabledButton.should("be.enabled");
5
+ await PlaygroundPage.termsCheckbox.should("be.checked");
6
+ }
@@ -0,0 +1,3 @@
1
+ it("should verify title on Mobile", async () => {
2
+ await MatchersPage.open();
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0007-title-and-navigation
3
+ title: Verify page title and sidebar navigation links
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify page title and sidebar navigation links
@@ -0,0 +1,5 @@
1
+ it("should verify browser page title and navigation links on Web", async () => {
2
+ await MatchersPage.open();
3
+ await browser.shouldContainTitle("TestSpectra");
4
+ await NavigationPage.sidebarLinks.should("have.length.greaterThan", 0);
5
+ });
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: suite-browser-context
3
+ name: BrowserContext
4
+ description: Browser page title, current URL, and navigation
5
+ executionOrder: 1.0
6
+ parallel: true
7
+ ---
8
+
9
+ # Suite: BrowserContext
@@ -0,0 +1,3 @@
1
+ it("should verify text on Mobile", async () => {
2
+ await MatchersPage.open("text");
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0005-text-and-values
3
+ title: Verify exact text, substring text, and input values
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify exact text, substring text, and input values
@@ -0,0 +1,7 @@
1
+ it("should verify text and value matchers on Web", async () => {
2
+ await MatchersPage.open("text");
3
+ await MatchersPage.exactText.should("have.text", Fixture.playgroundData.welcomeText);
4
+ await MatchersPage.partialText.should("contain.text", "Welcome");
5
+ await MatchersPage.emailInput.should("have.value", Fixture.playgroundData.defaultEmail);
6
+ await MatchersPage.tokenInput.should("contain.value", "JWT_");
7
+ });
@@ -0,0 +1,3 @@
1
+ it("should verify collection length on Mobile", async () => {
2
+ await MatchersPage.open("length");
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0006-collections-and-empty
3
+ title: Verify collection lengths, counts, and empty lists
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify collection lengths, counts, and empty lists
@@ -0,0 +1,6 @@
1
+ it("should verify collection lengths and empty lists on Web", async () => {
2
+ await MatchersPage.open("length");
3
+ await MatchersPage.productCards.should("have.length", 4);
4
+ await MatchersPage.productCards.should("have.length.greaterThan", 0);
5
+ await MatchersPage.emptyList.should("be.empty");
6
+ });
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: suite-content-matchers
3
+ name: ContentMatchers
4
+ description: Text content, substring matching, values and collections
5
+ executionOrder: 1.0
6
+ parallel: true
7
+ ---
8
+
9
+ # Suite: ContentMatchers
@@ -0,0 +1,3 @@
1
+ it("should verify visibility on Mobile", async () => {
2
+ await MatchersPage.open("visibility");
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0003-visibility-and-dom
3
+ title: Verify element visibility and existence matchers
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify element visibility and existence matchers
@@ -0,0 +1,5 @@
1
+ it("should verify be.visible and exist matchers on Web", async () => {
2
+ await MatchersPage.open("visibility");
3
+ await MatchersPage.visibleElement.should("be.visible");
4
+ await MatchersPage.existingElement.should("exist");
5
+ });
@@ -0,0 +1,3 @@
1
+ it("should verify button state on Mobile", async () => {
2
+ await MatchersPage.open("state");
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0004-states-and-attributes
3
+ title: Verify button state, checkbox, radio and attributes
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify button state, checkbox, radio and attributes
@@ -0,0 +1,8 @@
1
+ it("should verify enabled/disabled states and HTML attributes on Web", async () => {
2
+ await MatchersPage.open("state");
3
+ await MatchersPage.submitButton.should("be.enabled");
4
+ await MatchersPage.disabledButton.should("be.disabled");
5
+ await MatchersPage.checkbox.should("not.be.checked");
6
+ await MatchersPage.activeTab.should("have.class", "is-active");
7
+ await MatchersPage.navLink.should("have.attr", "href", Fixture.playgroundData.dashboardHref);
8
+ });
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: suite-element-matchers
3
+ name: ElementMatchers
4
+ description: Element visibility, existence, form states and attributes
5
+ executionOrder: 1.0
6
+ parallel: true
7
+ ---
8
+
9
+ # Suite: ElementMatchers
@@ -0,0 +1,3 @@
1
+ it("should verify playground states (Mobile)", async () => {
2
+ await Step.verifyPlaygroundState();
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0001-form-controls
3
+ title: Verify playground form inputs and default states
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify playground form inputs and default states
@@ -0,0 +1,6 @@
1
+ it("should verify live playground form inputs and default states (Web)", async () => {
2
+ await Step.verifyPlaygroundState();
3
+ await PlaygroundPage.emailInput.should("have.value", Fixture.playgroundData.defaultEmail);
4
+ await PlaygroundPage.tokenInput.should("contain.value", "JWT_");
5
+ await PlaygroundPage.exactText.should("have.text", Fixture.playgroundData.welcomeText);
6
+ });
@@ -0,0 +1,3 @@
1
+ it("should fill credentials (Mobile)", async () => {
2
+ await PlaygroundPage.open();
3
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: TC-0002-toggle-elements
3
+ title: Verify typing credentials and updating playground inputs
4
+ priority: High
5
+ caseType: Positive
6
+ status: ready-for-automation
7
+ coverage:
8
+ web: automated
9
+ mobile: automated
10
+ ---
11
+
12
+ # Verify typing credentials and updating playground inputs
@@ -0,0 +1,6 @@
1
+ it("should update input values and verify updated state (Web)", async () => {
2
+ await PlaygroundPage.open();
3
+ await PlaygroundPage.fillCredentials("qa.expert@testspectra.dev", "JWT_custom_session_token");
4
+ await PlaygroundPage.emailInput.should("have.value", "qa.expert@testspectra.dev");
5
+ await PlaygroundPage.tokenInput.should("contain.value", "JWT_custom_session_token");
6
+ });
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}
@@ -0,0 +1 @@
1
+ export default async function () {}