@axinom/mosaic-e2e-page-model 0.17.12 → 0.17.13-rc.3

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 (216) hide show
  1. package/dist/cjs/index.d.ts +6 -0
  2. package/dist/cjs/index.d.ts.map +1 -0
  3. package/dist/{index.js → cjs/index.js} +5 -5
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/managed-services/image-service/image-selection-explorer.d.ts.map +1 -0
  6. package/dist/cjs/managed-services/image-service/image-selection-explorer.js.map +1 -0
  7. package/dist/{managed-services → cjs/managed-services}/image-service/image-service.d.ts +17 -2
  8. package/dist/cjs/managed-services/image-service/image-service.d.ts.map +1 -0
  9. package/dist/{managed-services → cjs/managed-services}/image-service/image-service.js +30 -5
  10. package/dist/cjs/managed-services/image-service/image-service.js.map +1 -0
  11. package/dist/cjs/managed-services/image-service/index.d.ts +3 -0
  12. package/dist/cjs/managed-services/image-service/index.d.ts.map +1 -0
  13. package/dist/{ui-selectors → cjs/managed-services/image-service}/index.js +2 -2
  14. package/dist/cjs/managed-services/image-service/index.js.map +1 -0
  15. package/dist/cjs/managed-services/index.d.ts +3 -0
  16. package/dist/cjs/managed-services/index.d.ts.map +1 -0
  17. package/dist/{managed-services/image-service → cjs/managed-services}/index.js +2 -2
  18. package/dist/cjs/managed-services/index.js.map +1 -0
  19. package/dist/{managed-services → cjs/managed-services}/managed-service-model.d.ts +2 -2
  20. package/dist/cjs/managed-services/managed-service-model.d.ts.map +1 -0
  21. package/dist/cjs/managed-services/managed-service-model.js.map +1 -0
  22. package/dist/{managed-services → cjs/managed-services}/video-service.d.ts +1 -1
  23. package/dist/cjs/managed-services/video-service.d.ts.map +1 -0
  24. package/dist/{managed-services → cjs/managed-services}/video-service.js +8 -9
  25. package/dist/cjs/managed-services/video-service.js.map +1 -0
  26. package/dist/cjs/package.json +1 -0
  27. package/dist/{page-model.d.ts → cjs/page-model.d.ts} +4 -4
  28. package/dist/cjs/page-model.d.ts.map +1 -0
  29. package/dist/{page-model.js → cjs/page-model.js} +8 -8
  30. package/dist/cjs/page-model.js.map +1 -0
  31. package/dist/{service-model.d.ts → cjs/service-model.d.ts} +2 -2
  32. package/dist/cjs/service-model.d.ts.map +1 -0
  33. package/dist/cjs/service-model.js.map +1 -0
  34. package/dist/cjs/sign-in/index.d.ts +5 -0
  35. package/dist/cjs/sign-in/index.d.ts.map +1 -0
  36. package/dist/{sign-in → cjs/sign-in}/index.js +4 -4
  37. package/dist/cjs/sign-in/index.js.map +1 -0
  38. package/dist/{sign-in → cjs/sign-in}/sign-in-page.d.ts +4 -4
  39. package/dist/cjs/sign-in/sign-in-page.d.ts.map +1 -0
  40. package/dist/{sign-in → cjs/sign-in}/sign-in-page.js +6 -6
  41. package/dist/cjs/sign-in/sign-in-page.js.map +1 -0
  42. package/dist/{sign-in → cjs/sign-in}/sign-in-with-ax-auth-form.d.ts +1 -1
  43. package/dist/cjs/sign-in/sign-in-with-ax-auth-form.d.ts.map +1 -0
  44. package/dist/cjs/sign-in/sign-in-with-ax-auth-form.js.map +1 -0
  45. package/dist/{sign-in → cjs/sign-in}/sign-in-with-google-form.d.ts +1 -1
  46. package/dist/cjs/sign-in/sign-in-with-google-form.d.ts.map +1 -0
  47. package/dist/cjs/sign-in/sign-in-with-google-form.js.map +1 -0
  48. package/dist/{sign-in → cjs/sign-in}/sign-in-with-microsoft-form.d.ts +1 -1
  49. package/dist/cjs/sign-in/sign-in-with-microsoft-form.d.ts.map +1 -0
  50. package/dist/cjs/sign-in/sign-in-with-microsoft-form.js.map +1 -0
  51. package/dist/{ui-selectors → cjs/ui-selectors}/breadcrumbs.d.ts +1 -1
  52. package/dist/cjs/ui-selectors/breadcrumbs.d.ts.map +1 -0
  53. package/dist/cjs/ui-selectors/breadcrumbs.js.map +1 -0
  54. package/dist/cjs/ui-selectors/index.d.ts +3 -0
  55. package/dist/cjs/ui-selectors/index.d.ts.map +1 -0
  56. package/dist/{managed-services → cjs/ui-selectors}/index.js +2 -2
  57. package/dist/cjs/ui-selectors/index.js.map +1 -0
  58. package/dist/{ui-selectors → cjs/ui-selectors}/navigation-panel.d.ts +1 -1
  59. package/dist/cjs/ui-selectors/navigation-panel.d.ts.map +1 -0
  60. package/dist/cjs/ui-selectors/navigation-panel.js.map +1 -0
  61. package/dist/{ui-selectors → cjs/ui-selectors}/toast-notifications.d.ts +1 -1
  62. package/dist/cjs/ui-selectors/toast-notifications.d.ts.map +1 -0
  63. package/dist/cjs/ui-selectors/toast-notifications.js.map +1 -0
  64. package/dist/{ui-selectors → cjs/ui-selectors}/ui-shell-model.d.ts +4 -4
  65. package/dist/cjs/ui-selectors/ui-shell-model.d.ts.map +1 -0
  66. package/dist/{ui-selectors → cjs/ui-selectors}/ui-shell-model.js +10 -10
  67. package/dist/cjs/ui-selectors/ui-shell-model.js.map +1 -0
  68. package/dist/esm/index.d.ts +6 -0
  69. package/dist/esm/index.d.ts.map +1 -0
  70. package/dist/esm/index.js +6 -0
  71. package/dist/esm/index.js.map +1 -0
  72. package/dist/esm/managed-services/image-service/image-selection-explorer.d.ts +16 -0
  73. package/dist/esm/managed-services/image-service/image-selection-explorer.d.ts.map +1 -0
  74. package/dist/esm/managed-services/image-service/image-selection-explorer.js +38 -0
  75. package/dist/esm/managed-services/image-service/image-selection-explorer.js.map +1 -0
  76. package/dist/esm/managed-services/image-service/image-service.d.ts +80 -0
  77. package/dist/esm/managed-services/image-service/image-service.d.ts.map +1 -0
  78. package/dist/esm/managed-services/image-service/image-service.js +138 -0
  79. package/dist/esm/managed-services/image-service/image-service.js.map +1 -0
  80. package/dist/esm/managed-services/image-service/index.d.ts +3 -0
  81. package/dist/esm/managed-services/image-service/index.d.ts.map +1 -0
  82. package/dist/esm/managed-services/image-service/index.js +3 -0
  83. package/dist/esm/managed-services/image-service/index.js.map +1 -0
  84. package/dist/esm/managed-services/index.d.ts +3 -0
  85. package/dist/esm/managed-services/index.d.ts.map +1 -0
  86. package/dist/esm/managed-services/index.js +3 -0
  87. package/dist/esm/managed-services/index.js.map +1 -0
  88. package/dist/esm/managed-services/managed-service-model.d.ts +46 -0
  89. package/dist/esm/managed-services/managed-service-model.d.ts.map +1 -0
  90. package/dist/esm/managed-services/managed-service-model.js +32 -0
  91. package/dist/esm/managed-services/managed-service-model.js.map +1 -0
  92. package/dist/esm/managed-services/video-service.d.ts +107 -0
  93. package/dist/esm/managed-services/video-service.d.ts.map +1 -0
  94. package/dist/esm/managed-services/video-service.js +215 -0
  95. package/dist/esm/managed-services/video-service.js.map +1 -0
  96. package/dist/esm/package.json +1 -0
  97. package/dist/esm/page-model.d.ts +65 -0
  98. package/dist/esm/page-model.d.ts.map +1 -0
  99. package/dist/esm/page-model.js +100 -0
  100. package/dist/esm/page-model.js.map +1 -0
  101. package/dist/esm/service-model.d.ts +43 -0
  102. package/dist/esm/service-model.d.ts.map +1 -0
  103. package/dist/esm/service-model.js +30 -0
  104. package/dist/esm/service-model.js.map +1 -0
  105. package/dist/esm/sign-in/index.d.ts +5 -0
  106. package/dist/esm/sign-in/index.d.ts.map +1 -0
  107. package/dist/esm/sign-in/index.js +5 -0
  108. package/dist/esm/sign-in/index.js.map +1 -0
  109. package/dist/esm/sign-in/sign-in-page.d.ts +32 -0
  110. package/dist/esm/sign-in/sign-in-page.d.ts.map +1 -0
  111. package/dist/esm/sign-in/sign-in-page.js +32 -0
  112. package/dist/esm/sign-in/sign-in-page.js.map +1 -0
  113. package/dist/esm/sign-in/sign-in-with-ax-auth-form.d.ts +24 -0
  114. package/dist/esm/sign-in/sign-in-with-ax-auth-form.d.ts.map +1 -0
  115. package/dist/esm/sign-in/sign-in-with-ax-auth-form.js +58 -0
  116. package/dist/esm/sign-in/sign-in-with-ax-auth-form.js.map +1 -0
  117. package/dist/esm/sign-in/sign-in-with-google-form.d.ts +23 -0
  118. package/dist/esm/sign-in/sign-in-with-google-form.d.ts.map +1 -0
  119. package/dist/esm/sign-in/sign-in-with-google-form.js +48 -0
  120. package/dist/esm/sign-in/sign-in-with-google-form.js.map +1 -0
  121. package/dist/esm/sign-in/sign-in-with-microsoft-form.d.ts +24 -0
  122. package/dist/esm/sign-in/sign-in-with-microsoft-form.d.ts.map +1 -0
  123. package/dist/esm/sign-in/sign-in-with-microsoft-form.js +55 -0
  124. package/dist/esm/sign-in/sign-in-with-microsoft-form.js.map +1 -0
  125. package/dist/esm/ui-selectors/breadcrumbs.d.ts +24 -0
  126. package/dist/esm/ui-selectors/breadcrumbs.d.ts.map +1 -0
  127. package/dist/esm/ui-selectors/breadcrumbs.js +37 -0
  128. package/dist/esm/ui-selectors/breadcrumbs.js.map +1 -0
  129. package/dist/esm/ui-selectors/index.d.ts +3 -0
  130. package/dist/esm/ui-selectors/index.d.ts.map +1 -0
  131. package/dist/esm/ui-selectors/index.js +3 -0
  132. package/dist/esm/ui-selectors/index.js.map +1 -0
  133. package/dist/esm/ui-selectors/navigation-panel.d.ts +91 -0
  134. package/dist/esm/ui-selectors/navigation-panel.d.ts.map +1 -0
  135. package/dist/esm/ui-selectors/navigation-panel.js +132 -0
  136. package/dist/esm/ui-selectors/navigation-panel.js.map +1 -0
  137. package/dist/esm/ui-selectors/toast-notifications.d.ts +48 -0
  138. package/dist/esm/ui-selectors/toast-notifications.d.ts.map +1 -0
  139. package/dist/esm/ui-selectors/toast-notifications.js +64 -0
  140. package/dist/esm/ui-selectors/toast-notifications.js.map +1 -0
  141. package/dist/esm/ui-selectors/ui-shell-model.d.ts +158 -0
  142. package/dist/esm/ui-selectors/ui-shell-model.d.ts.map +1 -0
  143. package/dist/esm/ui-selectors/ui-shell-model.js +265 -0
  144. package/dist/esm/ui-selectors/ui-shell-model.js.map +1 -0
  145. package/package.json +19 -8
  146. package/src/index.ts +5 -5
  147. package/src/managed-services/image-service/image-service.ts +32 -2
  148. package/src/managed-services/image-service/index.ts +2 -2
  149. package/src/managed-services/index.ts +2 -2
  150. package/src/managed-services/managed-service-model.ts +2 -2
  151. package/src/managed-services/video-service.ts +1 -1
  152. package/src/page-model.ts +4 -4
  153. package/src/service-model.ts +2 -2
  154. package/src/sign-in/index.ts +4 -4
  155. package/src/sign-in/sign-in-page.ts +4 -4
  156. package/src/sign-in/sign-in-with-ax-auth-form.ts +1 -1
  157. package/src/sign-in/sign-in-with-google-form.ts +1 -1
  158. package/src/sign-in/sign-in-with-microsoft-form.ts +1 -1
  159. package/src/ui-selectors/breadcrumbs.ts +1 -1
  160. package/src/ui-selectors/index.ts +2 -2
  161. package/src/ui-selectors/navigation-panel.ts +1 -1
  162. package/src/ui-selectors/toast-notifications.ts +1 -1
  163. package/src/ui-selectors/ui-shell-model.ts +4 -4
  164. package/dist/index.d.ts +0 -6
  165. package/dist/index.d.ts.map +0 -1
  166. package/dist/index.js.map +0 -1
  167. package/dist/managed-services/image-service/image-selection-explorer.d.ts.map +0 -1
  168. package/dist/managed-services/image-service/image-selection-explorer.js.map +0 -1
  169. package/dist/managed-services/image-service/image-service.d.ts.map +0 -1
  170. package/dist/managed-services/image-service/image-service.js.map +0 -1
  171. package/dist/managed-services/image-service/index.d.ts +0 -3
  172. package/dist/managed-services/image-service/index.d.ts.map +0 -1
  173. package/dist/managed-services/image-service/index.js.map +0 -1
  174. package/dist/managed-services/index.d.ts +0 -3
  175. package/dist/managed-services/index.d.ts.map +0 -1
  176. package/dist/managed-services/index.js.map +0 -1
  177. package/dist/managed-services/managed-service-model.d.ts.map +0 -1
  178. package/dist/managed-services/managed-service-model.js.map +0 -1
  179. package/dist/managed-services/video-service.d.ts.map +0 -1
  180. package/dist/managed-services/video-service.js.map +0 -1
  181. package/dist/page-model.d.ts.map +0 -1
  182. package/dist/page-model.js.map +0 -1
  183. package/dist/service-model.d.ts.map +0 -1
  184. package/dist/service-model.js.map +0 -1
  185. package/dist/sign-in/index.d.ts +0 -5
  186. package/dist/sign-in/index.d.ts.map +0 -1
  187. package/dist/sign-in/index.js.map +0 -1
  188. package/dist/sign-in/sign-in-page.d.ts.map +0 -1
  189. package/dist/sign-in/sign-in-page.js.map +0 -1
  190. package/dist/sign-in/sign-in-with-ax-auth-form.d.ts.map +0 -1
  191. package/dist/sign-in/sign-in-with-ax-auth-form.js.map +0 -1
  192. package/dist/sign-in/sign-in-with-google-form.d.ts.map +0 -1
  193. package/dist/sign-in/sign-in-with-google-form.js.map +0 -1
  194. package/dist/sign-in/sign-in-with-microsoft-form.d.ts.map +0 -1
  195. package/dist/sign-in/sign-in-with-microsoft-form.js.map +0 -1
  196. package/dist/ui-selectors/breadcrumbs.d.ts.map +0 -1
  197. package/dist/ui-selectors/breadcrumbs.js.map +0 -1
  198. package/dist/ui-selectors/index.d.ts +0 -3
  199. package/dist/ui-selectors/index.d.ts.map +0 -1
  200. package/dist/ui-selectors/index.js.map +0 -1
  201. package/dist/ui-selectors/navigation-panel.d.ts.map +0 -1
  202. package/dist/ui-selectors/navigation-panel.js.map +0 -1
  203. package/dist/ui-selectors/toast-notifications.d.ts.map +0 -1
  204. package/dist/ui-selectors/toast-notifications.js.map +0 -1
  205. package/dist/ui-selectors/ui-shell-model.d.ts.map +0 -1
  206. package/dist/ui-selectors/ui-shell-model.js.map +0 -1
  207. /package/dist/{managed-services → cjs/managed-services}/image-service/image-selection-explorer.d.ts +0 -0
  208. /package/dist/{managed-services → cjs/managed-services}/image-service/image-selection-explorer.js +0 -0
  209. /package/dist/{managed-services → cjs/managed-services}/managed-service-model.js +0 -0
  210. /package/dist/{service-model.js → cjs/service-model.js} +0 -0
  211. /package/dist/{sign-in → cjs/sign-in}/sign-in-with-ax-auth-form.js +0 -0
  212. /package/dist/{sign-in → cjs/sign-in}/sign-in-with-google-form.js +0 -0
  213. /package/dist/{sign-in → cjs/sign-in}/sign-in-with-microsoft-form.js +0 -0
  214. /package/dist/{ui-selectors → cjs/ui-selectors}/breadcrumbs.js +0 -0
  215. /package/dist/{ui-selectors → cjs/ui-selectors}/navigation-panel.js +0 -0
  216. /package/dist/{ui-selectors → cjs/ui-selectors}/toast-notifications.js +0 -0
@@ -0,0 +1,107 @@
1
+ import { ManagedServiceModel } from './managed-service-model.js';
2
+ /** A model for the managed image service. */
3
+ export declare class VideoService extends ManagedServiceModel {
4
+ /**
5
+ * This method navigates to a video details station by title.
6
+ * The management system must be loaded & signed in before using this method.
7
+ * If there is not exactly one matching video an exception will be raised.
8
+ *
9
+ * The following steps will be taken:
10
+ * - Navigate to the home breadcrumb then the 'Videos' tile
11
+ * - Filter by title and verify that a single result is shown
12
+ * - Click the video row action
13
+ * - Wait for the video details station to load
14
+ */
15
+ navigateToVideoDetails(args: {
16
+ /** A unique video title. */
17
+ title: string;
18
+ }): Promise<void>;
19
+ /**
20
+ * This method approves a video by title.
21
+ * The management system must be loaded & signed in before using this method.
22
+ * If a single matching, non-archived video is not found then an exception will be raised.
23
+ *
24
+ * The following steps will be taken:
25
+ * - Navigate to the home breadcrumb then the 'Videos' tile
26
+ * - Filter by title and verify that a single result is shown
27
+ * - Navigate to the video with the row action
28
+ * - Click 'Preview' then set the status to 'Approved'
29
+ * - Click the 'previous' breadcrumb and wait for the video details station to load
30
+ */
31
+ approveVideo(args: {
32
+ /** A unique video title. */
33
+ title: string;
34
+ }): Promise<void>;
35
+ /**
36
+ * This method archives a video by title.
37
+ * The management system must be loaded & signed in before using this method.
38
+ * If a single matching, non-archived video is not found then an exception will be raised.
39
+ *
40
+ * The following steps will be taken:
41
+ * - Navigate to the home breadcrumb then the 'Videos' tile
42
+ * - Filter by title and verify that a single result is shown
43
+ * - Navigate to the video with the row action
44
+ * - Click 'Archive' and confirm
45
+ * - Wait for the video details station to reload
46
+ */
47
+ archiveVideo(args: {
48
+ /** A unique video title. */
49
+ title: string;
50
+ }): Promise<void>;
51
+ /**
52
+ * This method deletes a video by title.
53
+ * The management system must be loaded & signed in before using this method.
54
+ * If a single matching, undeleted video is not found then an exception will be raised.
55
+ *
56
+ * The following steps will be taken:
57
+ * - Navigate to the home breadcrumb then the 'Videos' tile
58
+ * - Filter by title and verify that a single result is shown
59
+ * - Navigate to the video with the row action
60
+ * - Click 'Delete' and confirm
61
+ * - Wait for the videos explorer station to reload
62
+ */
63
+ deleteVideo(args: {
64
+ /** A unique video title. */
65
+ title: string;
66
+ }): Promise<void>;
67
+ /**
68
+ * This method creates a video processing profile.
69
+ * The management system must be loaded & signed in before using this method.
70
+ *
71
+ * The following steps will be taken:
72
+ * - Navigate to the home breadcrumb then the 'Settings' tile
73
+ * - Navigate to the 'Video Encoding', 'Processing' tile
74
+ * - Click the 'New' action
75
+ * - Enter values for 'Title' and 'Output Format'
76
+ * - Click the 'Proceed' action
77
+ * - Enter the value for 'DRM Protection' (if provided)
78
+ * - Click the 'previous' breadcrumb and wait for the explorer station to load
79
+ */
80
+ createVideoProcessingProfile(properties: {
81
+ /** A unique video processing profile title. */
82
+ title: string;
83
+ /** The output format to set (display label). */
84
+ outputFormat: 'HLS' | 'DASH' | 'DASH & HLS' | 'CMAF' | 'DASH On Demand' | 'MPEG-2 TS';
85
+ /** The DRM protection type to set (display label). If omitted then "None" will be chosen. */
86
+ drmProtection?: 'Single Key' | 'Multiple Keys';
87
+ }): Promise<void>;
88
+ /**
89
+ * This method delete a video processing profile by title.
90
+ * The management system must be loaded & signed in before using this method.
91
+ * If a single matching processing profile is not found then an exception will be raised.
92
+ *
93
+ * The following steps will be taken:
94
+ * - Navigate to the home breadcrumb then the 'Settings' tile
95
+ * - Navigate to the 'Video Encoding', 'Processing' tile
96
+ * - Filter by title and select the processing profile row action
97
+ * - Click the 'Delete' action and wait for the explorer station to load
98
+ */
99
+ deleteVideoProcessingProfile(args: {
100
+ /** A unique video processing profile title. */
101
+ title: string;
102
+ }): Promise<void>;
103
+ waitForEncodingSuccess(args: {
104
+ videoSource: string;
105
+ }): Promise<void>;
106
+ }
107
+ //# sourceMappingURL=video-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-service.d.ts","sourceRoot":"","sources":["../../../src/managed-services/video-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,6CAA6C;AAC7C,qBAAa,YAAa,SAAQ,mBAAmB;IACnD;;;;;;;;;;OAUG;IACG,sBAAsB,CAAC,IAAI,EAAE;QACjC,4BAA4B;QAC5B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjB;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,IAAI,EAAE;QACvB,4BAA4B;QAC5B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjB;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,IAAI,EAAE;QACvB,4BAA4B;QAC5B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjB;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,IAAI,EAAE;QACtB,4BAA4B;QAC5B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjB;;;;;;;;;;;;OAYG;IACG,4BAA4B,CAAC,UAAU,EAAE;QAC7C,+CAA+C;QAC/C,KAAK,EAAE,MAAM,CAAC;QACd,gDAAgD;QAChD,YAAY,EACR,KAAK,GACL,MAAM,GACN,YAAY,GACZ,MAAM,GACN,gBAAgB,GAChB,WAAW,CAAC;QAChB,6FAA6F;QAC7F,aAAa,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;KAChD,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjB;;;;;;;;;;OAUG;IACG,4BAA4B,CAAC,IAAI,EAAE;QACvC,+CAA+C;QAC/C,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCX,sBAAsB,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B3E"}
@@ -0,0 +1,215 @@
1
+ import { ActionLabel } from '@axinom/mosaic-e2e-ui-selectors';
2
+ import { expect } from '@playwright/test';
3
+ import { ManagedServiceModel } from './managed-service-model.js';
4
+ /** A model for the managed image service. */
5
+ export class VideoService extends ManagedServiceModel {
6
+ /**
7
+ * This method navigates to a video details station by title.
8
+ * The management system must be loaded & signed in before using this method.
9
+ * If there is not exactly one matching video an exception will be raised.
10
+ *
11
+ * The following steps will be taken:
12
+ * - Navigate to the home breadcrumb then the 'Videos' tile
13
+ * - Filter by title and verify that a single result is shown
14
+ * - Click the video row action
15
+ * - Wait for the video details station to load
16
+ */
17
+ async navigateToVideoDetails(args) {
18
+ const { uiShell, uiManagedWorkflows } = this;
19
+ await uiShell.goToNavigationPanelItemByTestIds('videos');
20
+ await uiManagedWorkflows.list.waitForData();
21
+ // filter to the item
22
+ await uiManagedWorkflows.filters
23
+ .getFilterByName('title')
24
+ .asFreeTextFilter()
25
+ .setValue(args.title);
26
+ await uiManagedWorkflows.list.waitForData();
27
+ await expect(uiManagedWorkflows.list.allVisibleRows).toHaveCount(1);
28
+ // Verify that there is exactly one matching row
29
+ if ((await uiManagedWorkflows.list.allVisibleRows.count()) !== 1) {
30
+ throw new Error(`Failed to find exactly one video with title '${args.title}'.`);
31
+ }
32
+ // navigate
33
+ await uiShell.waitForPageTransition(uiManagedWorkflows.list.getRow(1).actionButton.click());
34
+ await uiManagedWorkflows.form.waitForData();
35
+ }
36
+ /**
37
+ * This method approves a video by title.
38
+ * The management system must be loaded & signed in before using this method.
39
+ * If a single matching, non-archived video is not found then an exception will be raised.
40
+ *
41
+ * The following steps will be taken:
42
+ * - Navigate to the home breadcrumb then the 'Videos' tile
43
+ * - Filter by title and verify that a single result is shown
44
+ * - Navigate to the video with the row action
45
+ * - Click 'Preview' then set the status to 'Approved'
46
+ * - Click the 'previous' breadcrumb and wait for the video details station to load
47
+ */
48
+ async approveVideo(args) {
49
+ const { uiShell, uiManagedWorkflows } = this;
50
+ await this.navigateToVideoDetails(args);
51
+ const action = uiManagedWorkflows.actions.getActionByLabel('Preview');
52
+ try {
53
+ await action.waitFor({ state: 'visible' });
54
+ }
55
+ catch {
56
+ throw new Error(`The video "Preview" action is not visible.`);
57
+ }
58
+ await uiShell.waitForPageTransition(action.click());
59
+ await uiManagedWorkflows.form.waitForData();
60
+ await uiManagedWorkflows.form
61
+ .getFieldByLabel('Status')
62
+ .asSelectField()
63
+ .setValueByLabel('Approved');
64
+ await uiShell.navigateToBreadcrumbPrevious();
65
+ await uiManagedWorkflows.form.waitForData();
66
+ }
67
+ /**
68
+ * This method archives a video by title.
69
+ * The management system must be loaded & signed in before using this method.
70
+ * If a single matching, non-archived video is not found then an exception will be raised.
71
+ *
72
+ * The following steps will be taken:
73
+ * - Navigate to the home breadcrumb then the 'Videos' tile
74
+ * - Filter by title and verify that a single result is shown
75
+ * - Navigate to the video with the row action
76
+ * - Click 'Archive' and confirm
77
+ * - Wait for the video details station to reload
78
+ */
79
+ async archiveVideo(args) {
80
+ const { uiShell, uiManagedWorkflows } = this;
81
+ await this.navigateToVideoDetails(args);
82
+ const action = uiManagedWorkflows.actions.getActionByLabel('Archive');
83
+ try {
84
+ await action.waitFor({ state: 'visible' });
85
+ }
86
+ catch {
87
+ throw new Error(`The video "Archive" action is not visible.`);
88
+ }
89
+ await action.click();
90
+ await uiShell.waitForPageTransition(uiManagedWorkflows.actions.confirmButton.click());
91
+ await uiManagedWorkflows.form.waitForData();
92
+ }
93
+ /**
94
+ * This method deletes a video by title.
95
+ * The management system must be loaded & signed in before using this method.
96
+ * If a single matching, undeleted video is not found then an exception will be raised.
97
+ *
98
+ * The following steps will be taken:
99
+ * - Navigate to the home breadcrumb then the 'Videos' tile
100
+ * - Filter by title and verify that a single result is shown
101
+ * - Navigate to the video with the row action
102
+ * - Click 'Delete' and confirm
103
+ * - Wait for the videos explorer station to reload
104
+ */
105
+ async deleteVideo(args) {
106
+ const { uiShell, uiManagedWorkflows } = this;
107
+ await this.navigateToVideoDetails(args);
108
+ const action = uiManagedWorkflows.actions.getActionByLabel('Delete');
109
+ try {
110
+ await action.waitFor({ state: 'visible' });
111
+ }
112
+ catch {
113
+ throw new Error(`The video "Delete" action is not visible.`);
114
+ }
115
+ await action.click();
116
+ await uiShell.waitForPageTransition(uiManagedWorkflows.actions.confirmButton.click());
117
+ }
118
+ /**
119
+ * This method creates a video processing profile.
120
+ * The management system must be loaded & signed in before using this method.
121
+ *
122
+ * The following steps will be taken:
123
+ * - Navigate to the home breadcrumb then the 'Settings' tile
124
+ * - Navigate to the 'Video Encoding', 'Processing' tile
125
+ * - Click the 'New' action
126
+ * - Enter values for 'Title' and 'Output Format'
127
+ * - Click the 'Proceed' action
128
+ * - Enter the value for 'DRM Protection' (if provided)
129
+ * - Click the 'previous' breadcrumb and wait for the explorer station to load
130
+ */
131
+ async createVideoProcessingProfile(properties) {
132
+ const { uiShell, uiManagedWorkflows } = this;
133
+ await uiShell.goToNavigationPanelItemByTestIds('video-encoding-settings-processing', 'video-encoding-settings');
134
+ await uiManagedWorkflows.list.waitForData();
135
+ // new profile
136
+ await uiShell.waitForPageTransition(uiManagedWorkflows.pageHeader.actions.getActionByLabel('New').click());
137
+ await uiManagedWorkflows.form.waitForData();
138
+ await uiManagedWorkflows.form
139
+ .getFieldByLabel('Title')
140
+ .asSingleLineTextField()
141
+ .setValue(properties.title);
142
+ await uiManagedWorkflows.form
143
+ .getFieldByLabel('Output Format')
144
+ .asSelectField()
145
+ .setValueByLabel(properties.outputFormat);
146
+ await uiShell.waitForPageTransition(uiManagedWorkflows.actions.getActionByLabel(ActionLabel.Proceed).click());
147
+ await uiManagedWorkflows.form.waitForData();
148
+ // configure profile
149
+ if (properties.drmProtection) {
150
+ await uiManagedWorkflows.form
151
+ .getFieldByLabel('DRM Protection')
152
+ .asSelectField()
153
+ .setValueByLabel(properties.drmProtection);
154
+ }
155
+ // click 'previous' breadcrumb to save
156
+ await uiShell.navigateToBreadcrumbPrevious();
157
+ await uiManagedWorkflows.list.waitForData();
158
+ }
159
+ /**
160
+ * This method delete a video processing profile by title.
161
+ * The management system must be loaded & signed in before using this method.
162
+ * If a single matching processing profile is not found then an exception will be raised.
163
+ *
164
+ * The following steps will be taken:
165
+ * - Navigate to the home breadcrumb then the 'Settings' tile
166
+ * - Navigate to the 'Video Encoding', 'Processing' tile
167
+ * - Filter by title and select the processing profile row action
168
+ * - Click the 'Delete' action and wait for the explorer station to load
169
+ */
170
+ async deleteVideoProcessingProfile(args) {
171
+ const { uiShell, uiManagedWorkflows } = this;
172
+ await uiShell.goToNavigationPanelItemByTestIds('video-encoding-settings-processing', 'video-encoding-settings');
173
+ await uiManagedWorkflows.list.waitForData();
174
+ // filter to the item
175
+ await uiManagedWorkflows.filters
176
+ .getFilterByName('title')
177
+ .asFreeTextFilter()
178
+ .setValue(args.title);
179
+ await uiManagedWorkflows.list.waitForData();
180
+ await expect(uiManagedWorkflows.list.allVisibleRows).toHaveCount(1);
181
+ // Verify that there is exactly one matching row
182
+ if ((await uiManagedWorkflows.list.allVisibleRows.count()) !== 1) {
183
+ throw new Error(`Failed to find exactly one processing profile with title '${args.title}'.`);
184
+ }
185
+ // open the processing profile details then delete
186
+ await uiShell.waitForPageTransition(uiManagedWorkflows.list.getRow(1).actionButton.click());
187
+ await uiManagedWorkflows.form.waitForData();
188
+ await uiManagedWorkflows.actions.getActionByLabel('Delete').click();
189
+ await uiShell.waitForPageTransition(uiManagedWorkflows.actions.confirmButton.click());
190
+ await uiManagedWorkflows.list.waitForData();
191
+ }
192
+ async waitForEncodingSuccess(args) {
193
+ const { uiShell, uiManagedWorkflows } = this;
194
+ await uiShell.goToNavigationPanelItem('Processing', 'Videos');
195
+ await uiManagedWorkflows.list.waitForData();
196
+ await uiManagedWorkflows.filters
197
+ .getFilterByLabel('Title')
198
+ .asFreeTextFilter()
199
+ .setValue(args.videoSource);
200
+ await uiManagedWorkflows.list.waitForData();
201
+ await uiShell.waitForPageTransition(uiManagedWorkflows.list.getRow(1).actionButton.click());
202
+ await uiManagedWorkflows.form.waitForData();
203
+ let status;
204
+ do {
205
+ // eslint-disable-next-line playwright/no-wait-for-timeout
206
+ await this.page.waitForTimeout(5_000);
207
+ await uiShell.navigateToBreadcrumbRefresh();
208
+ await uiManagedWorkflows.form.waitForData();
209
+ status = (await uiManagedWorkflows.form
210
+ .getFieldByLabel('Encoding State')
211
+ .content.textContent())?.trim();
212
+ } while (status !== 'Ready' && status !== 'Error');
213
+ }
214
+ }
215
+ //# sourceMappingURL=video-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-service.js","sourceRoot":"","sources":["../../../src/managed-services/video-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACnD;;;;;;;;;;OAUG;IACH,KAAK,CAAC,sBAAsB,CAAC,IAG5B;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,OAAO,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,qBAAqB;QACrB,MAAM,kBAAkB,CAAC,OAAO;aAC7B,eAAe,CAAC,OAAO,CAAC;aACxB,gBAAgB,EAAE;aAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpE,gDAAgD;QAChD,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,KAAK,IAAI,CAC/D,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CACvD,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,YAAY,CAAC,IAGlB;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,kBAAkB,CAAC,IAAI;aAC1B,eAAe,CAAC,QAAQ,CAAC;aACzB,aAAa,EAAE;aACf,eAAe,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,OAAO,CAAC,4BAA4B,EAAE,CAAC;QAC7C,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,YAAY,CAAC,IAGlB;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CACjD,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,WAAW,CAAC,IAGjB;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CACjD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,4BAA4B,CAAC,UAalC;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,OAAO,CAAC,gCAAgC,CAC5C,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,cAAc;QACd,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CACtE,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,kBAAkB,CAAC,IAAI;aAC1B,eAAe,CAAC,OAAO,CAAC;aACxB,qBAAqB,EAAE;aACvB,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,kBAAkB,CAAC,IAAI;aAC1B,eAAe,CAAC,eAAe,CAAC;aAChC,aAAa,EAAE;aACf,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CACzE,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,oBAAoB;QACpB,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,kBAAkB,CAAC,IAAI;iBAC1B,eAAe,CAAC,gBAAgB,CAAC;iBACjC,aAAa,EAAE;iBACf,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QACD,sCAAsC;QACtC,MAAM,OAAO,CAAC,4BAA4B,EAAE,CAAC;QAC7C,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,4BAA4B,CAAC,IAGlC;QACC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,OAAO,CAAC,gCAAgC,CAC5C,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,qBAAqB;QACrB,MAAM,kBAAkB,CAAC,OAAO;aAC7B,eAAe,CAAC,OAAO,CAAC;aACxB,gBAAgB,EAAE;aAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEpE,gDAAgD;QAChD,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,KAAK,IAAI,CAC5E,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CACvD,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACpE,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CACjD,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAA6B;QACxD,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;QAE7C,MAAM,OAAO,CAAC,uBAAuB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,kBAAkB,CAAC,OAAO;aAC7B,gBAAgB,CAAC,OAAO,CAAC;aACzB,gBAAgB,EAAE;aAClB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,OAAO,CAAC,qBAAqB,CACjC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CACvD,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC;QACX,GAAG,CAAC;YACF,0DAA0D;YAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,OAAO,CAAC,2BAA2B,EAAE,CAAC;YAC5C,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,GAAG,CACP,MAAM,kBAAkB,CAAC,IAAI;iBAC1B,eAAe,CAAC,gBAAgB,CAAC;iBACjC,OAAO,CAAC,WAAW,EAAE,CACzB,EAAE,IAAI,EAAE,CAAC;QACZ,CAAC,QAAQ,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;IACrD,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,65 @@
1
+ import { UiWorkflowsModel } from '@axinom/mosaic-e2e-ui-selectors';
2
+ import { type Page } from '@playwright/test';
3
+ import { ImageService, VideoService } from './managed-services/index.js';
4
+ import { SignInPage } from './sign-in/index.js';
5
+ import { UiShellModel } from './ui-selectors/index.js';
6
+ /**
7
+ * A page object model for the Mosaic management system.
8
+ * This can be extended with custom services.
9
+ */
10
+ export declare class PageModel {
11
+ /** The playwright page object. */
12
+ readonly page: Page;
13
+ constructor(
14
+ /** The playwright page object. */
15
+ page: Page);
16
+ /**
17
+ * A model representing the Mosaic UI shell including methods for navigation.
18
+ *
19
+ * Use this model to interact with:
20
+ * - The breadcrumbs bar (on any page)
21
+ * - The landing page
22
+ * - The settings hub page
23
+ */
24
+ readonly uiShell: UiShellModel;
25
+ /**
26
+ * A model representing Mosaic UI workflows for managed services.
27
+ *
28
+ * Use this model to interact with workflows or mod*a*ls of any managed
29
+ * service (Image, Video, etc).
30
+ *
31
+ * To avoid UI changes from breaking your tests try to avoid using this model
32
+ * and prefer to use the methods provided by each service model.
33
+ */
34
+ readonly uiManagedWorkflows: UiWorkflowsModel;
35
+ /** A model for management system sign-in */
36
+ readonly signInPage: SignInPage;
37
+ /** A model for the managed image service. */
38
+ readonly imageService: ImageService;
39
+ /** A model for the managed video service. */
40
+ readonly videoService: VideoService;
41
+ /** This method waits for the management system to load after sign in. */
42
+ waitForAppToLoad(): Promise<void>;
43
+ /**
44
+ * This method help with the selection of options in Bulk Edit Tests.
45
+ * The tester can decide to select the number of entities they want to bulk edit.
46
+ * This Selection starts from the first in the list.
47
+ * A Bulk Edit option needs to be passed for the relevant entity to select it from the dropdown.
48
+ * To be used when in a List Station
49
+ *
50
+ * The following steps will be taken:
51
+ * - Click Bulk Actions
52
+ * - Select the number of entities from the list station starting from the first one in the list
53
+ * - Click the Edit button
54
+ * - Select a field to add from the drop-down
55
+ *
56
+ * @param args.entityCount Number of entities to be selected for the BulkEdit.
57
+ * @param args.bulkEditOption BulkEdit option to select from the drop-down
58
+ */
59
+ bulkEditSelection(args: {
60
+ entityCount: number;
61
+ bulkEditOption: string;
62
+ }): Promise<void>;
63
+ sortDescOrder(): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=page-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-model.d.ts","sourceRoot":"","sources":["../../src/page-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAU,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,SAAS;IAElB,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,IAAI;;IADnB,kCAAkC;IACzB,IAAI,EAAE,IAAI;IAGrB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,eAA+B;IAE/C;;;;;;;;OAQG;IACH,QAAQ,CAAC,kBAAkB,mBAAmC;IAE9D,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,aAA6B;IAEhD,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,eAInB;IAEF,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,eAInB;IAEF,yEAAyE;IACnE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvC;;;;;;;;;;;;;;;OAeG;IACG,iBAAiB,CAAC,IAAI,EAAE;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBX,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAarC"}
@@ -0,0 +1,100 @@
1
+ import { UiWorkflowsModel } from '@axinom/mosaic-e2e-ui-selectors';
2
+ import { expect } from '@playwright/test';
3
+ import { ImageService, VideoService } from './managed-services/index.js';
4
+ import { SignInPage } from './sign-in/index.js';
5
+ import { UiShellModel } from './ui-selectors/index.js';
6
+ /**
7
+ * A page object model for the Mosaic management system.
8
+ * This can be extended with custom services.
9
+ */
10
+ export class PageModel {
11
+ constructor(
12
+ /** The playwright page object. */
13
+ page) {
14
+ this.page = page;
15
+ /**
16
+ * A model representing the Mosaic UI shell including methods for navigation.
17
+ *
18
+ * Use this model to interact with:
19
+ * - The breadcrumbs bar (on any page)
20
+ * - The landing page
21
+ * - The settings hub page
22
+ */
23
+ this.uiShell = new UiShellModel(this.page);
24
+ /**
25
+ * A model representing Mosaic UI workflows for managed services.
26
+ *
27
+ * Use this model to interact with workflows or mod*a*ls of any managed
28
+ * service (Image, Video, etc).
29
+ *
30
+ * To avoid UI changes from breaking your tests try to avoid using this model
31
+ * and prefer to use the methods provided by each service model.
32
+ */
33
+ this.uiManagedWorkflows = new UiWorkflowsModel(this.page);
34
+ /** A model for management system sign-in */
35
+ this.signInPage = new SignInPage(this.page);
36
+ /** A model for the managed image service. */
37
+ this.imageService = new ImageService(this.page, this.uiShell, this.uiManagedWorkflows);
38
+ /** A model for the managed video service. */
39
+ this.videoService = new VideoService(this.page, this.uiShell, this.uiManagedWorkflows);
40
+ }
41
+ /** This method waits for the management system to load after sign in. */
42
+ async waitForAppToLoad() {
43
+ // expect elements 'header' and 'main' to be visible
44
+ try {
45
+ await this.page.locator('header').first().waitFor({ state: 'visible' });
46
+ await this.page.locator('main').waitFor({ state: 'visible' });
47
+ }
48
+ catch {
49
+ throw new Error('The management system is not loaded. Are you logged in? Is your account activated?');
50
+ }
51
+ }
52
+ /**
53
+ * This method help with the selection of options in Bulk Edit Tests.
54
+ * The tester can decide to select the number of entities they want to bulk edit.
55
+ * This Selection starts from the first in the list.
56
+ * A Bulk Edit option needs to be passed for the relevant entity to select it from the dropdown.
57
+ * To be used when in a List Station
58
+ *
59
+ * The following steps will be taken:
60
+ * - Click Bulk Actions
61
+ * - Select the number of entities from the list station starting from the first one in the list
62
+ * - Click the Edit button
63
+ * - Select a field to add from the drop-down
64
+ *
65
+ * @param args.entityCount Number of entities to be selected for the BulkEdit.
66
+ * @param args.bulkEditOption BulkEdit option to select from the drop-down
67
+ */
68
+ async bulkEditSelection(args) {
69
+ const { uiManagedWorkflows } = this;
70
+ await uiManagedWorkflows.pageHeader.actions
71
+ .getActionByLabel('Bulk Actions')
72
+ .click();
73
+ for (let i = 1; i <= args.entityCount; i++) {
74
+ await this.page
75
+ .locator("//button[@data-test-id='list-entry-checkbox']")
76
+ .nth(i)
77
+ .click();
78
+ }
79
+ await uiManagedWorkflows.pageHeader.actions
80
+ .getActionByLabel('Edit')
81
+ .click();
82
+ const bulkEditField = uiManagedWorkflows.form
83
+ .getFieldByName('bulkedit-fields')
84
+ .asSelectField();
85
+ await bulkEditField.verifyFieldType();
86
+ await bulkEditField.setValueByLabel(args.bulkEditOption);
87
+ }
88
+ async sortDescOrder() {
89
+ const { uiManagedWorkflows } = this;
90
+ const sortColumn = this.page.locator("//div[@data-test-id='list-label:updatedAt']");
91
+ await sortColumn.waitFor({ state: 'visible' });
92
+ let sortDir = await sortColumn.getAttribute('data-test-sort-dir');
93
+ while (sortDir !== 'desc') {
94
+ await sortColumn.click();
95
+ await uiManagedWorkflows.list.waitForData();
96
+ sortDir = await sortColumn.getAttribute('data-test-sort-dir');
97
+ }
98
+ }
99
+ }
100
+ //# sourceMappingURL=page-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-model.js","sourceRoot":"","sources":["../../src/page-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type Page } from '@playwright/test';
2
+ import { UiShellModel } from './ui-selectors/index.js';
3
+ /**
4
+ * An abstract model representing a custom Mosaic service.
5
+ */
6
+ export declare abstract class ServiceModel<TUiWorkflowsModel> {
7
+ /** The playwright page object. */
8
+ protected readonly page: Page;
9
+ /**
10
+ * A model representing the Mosaic UI shell including methods for navigation.
11
+ *
12
+ * Use this model to interact with:
13
+ * - The breadcrumbs bar (on any page)
14
+ * - The landing page
15
+ * - The settings hub page
16
+ */
17
+ protected readonly uiShell: UiShellModel;
18
+ /**
19
+ * A model representing Mosaic UI workflows.
20
+ *
21
+ * Use this model to interact with workflows or mod*a*ls of any custom service.
22
+ */
23
+ protected readonly uiWorkflows: TUiWorkflowsModel;
24
+ constructor(
25
+ /** The playwright page object. */
26
+ page: Page,
27
+ /**
28
+ * A model representing the Mosaic UI shell including methods for navigation.
29
+ *
30
+ * Use this model to interact with:
31
+ * - The breadcrumbs bar (on any page)
32
+ * - The landing page
33
+ * - The settings hub page
34
+ */
35
+ uiShell: UiShellModel,
36
+ /**
37
+ * A model representing Mosaic UI workflows.
38
+ *
39
+ * Use this model to interact with workflows or mod*a*ls of any custom service.
40
+ */
41
+ uiWorkflows: TUiWorkflowsModel);
42
+ }
43
+ //# sourceMappingURL=service-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-model.d.ts","sourceRoot":"","sources":["../../src/service-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,8BAAsB,YAAY,CAAC,iBAAiB;IAEhD,kCAAkC;IAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;IAE7B;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY;IAExC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB;;IAlBjD,kCAAkC;IACf,IAAI,EAAE,IAAI;IAE7B;;;;;;;OAOG;IACgB,OAAO,EAAE,YAAY;IAExC;;;;OAIG;IACgB,WAAW,EAAE,iBAAiB;CAEpD"}
@@ -0,0 +1,30 @@
1
+ import {} from '@playwright/test';
2
+ import { UiShellModel } from './ui-selectors/index.js';
3
+ /**
4
+ * An abstract model representing a custom Mosaic service.
5
+ */
6
+ export class ServiceModel {
7
+ constructor(
8
+ /** The playwright page object. */
9
+ page,
10
+ /**
11
+ * A model representing the Mosaic UI shell including methods for navigation.
12
+ *
13
+ * Use this model to interact with:
14
+ * - The breadcrumbs bar (on any page)
15
+ * - The landing page
16
+ * - The settings hub page
17
+ */
18
+ uiShell,
19
+ /**
20
+ * A model representing Mosaic UI workflows.
21
+ *
22
+ * Use this model to interact with workflows or mod*a*ls of any custom service.
23
+ */
24
+ uiWorkflows) {
25
+ this.page = page;
26
+ this.uiShell = uiShell;
27
+ this.uiWorkflows = uiWorkflows;
28
+ }
29
+ }
30
+ //# sourceMappingURL=service-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-model.js","sourceRoot":"","sources":["../../src/service-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAgB,YAAY;IAChC;IACE,kCAAkC;IACf,IAAU;IAE7B;;;;;;;OAOG;IACgB,OAAqB;IAExC;;;;OAIG;IACgB,WAA8B;QAjB9B,SAAI,GAAJ,IAAI,CAAM;QAUV,YAAO,GAAP,OAAO,CAAc;QAOrB,gBAAW,GAAX,WAAW,CAAmB;IAChD,CAAC;CACL"}
@@ -0,0 +1,5 @@
1
+ export * from './sign-in-page.js';
2
+ export * from './sign-in-with-ax-auth-form.js';
3
+ export * from './sign-in-with-google-form.js';
4
+ export * from './sign-in-with-microsoft-form.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sign-in/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './sign-in-page.js';
2
+ export * from './sign-in-with-ax-auth-form.js';
3
+ export * from './sign-in-with-google-form.js';
4
+ export * from './sign-in-with-microsoft-form.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sign-in/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { MessageBar } from '@axinom/mosaic-e2e-ui-selectors';
2
+ import { type Page } from '@playwright/test';
3
+ import { SignInWithAxAuthForm } from './sign-in-with-ax-auth-form.js';
4
+ import { SignInWithGoogleForm } from './sign-in-with-google-form.js';
5
+ import { SignInWithMicrosoftForm } from './sign-in-with-microsoft-form.js';
6
+ /** A model for management system sign-in */
7
+ export declare class SignInPage {
8
+ /** The playwright page object. */
9
+ private page;
10
+ constructor(
11
+ /** The playwright page object. */
12
+ page: Page);
13
+ /** A locator to a message which is displayed when the environment is disabled. */
14
+ readonly message: MessageBar;
15
+ /** A locator to the "Sign in with AxAuth" button. */
16
+ readonly axAuthButton: import("playwright-core").Locator;
17
+ readonly axAuthemailField: import("playwright-core").Locator;
18
+ readonly axAuthpasswordField: import("playwright-core").Locator;
19
+ /** A locator to the "Sign in with Google" button. */
20
+ readonly googleButton: import("playwright-core").Locator;
21
+ /** A locator to the "Sign in with Microsoft" button. */
22
+ readonly microsoftButton: import("playwright-core").Locator;
23
+ /** A locator to the "Sign in with Axinom" button. */
24
+ readonly axinomButton: import("playwright-core").Locator;
25
+ /** A model for the AxAuth sign-in form */
26
+ readonly axAuthForm: SignInWithAxAuthForm;
27
+ /** A model for the Google sign-in form */
28
+ readonly googleForm: SignInWithGoogleForm;
29
+ /** A model for the Microsoft sign-in form */
30
+ readonly microsoftForm: SignInWithMicrosoftForm;
31
+ }
32
+ //# sourceMappingURL=sign-in-page.d.ts.map