@@ -17,82 +17,6 @@ type MarkdownEditorToolbarsLocators = Record<
17
17
Locator
18
18
> ;
19
19
20
- class YfmTable {
21
- readonly buttonPlusRowLocator ;
22
- readonly buttonPlusColumnLocator ;
23
- private readonly tableWrapperLocator ;
24
-
25
- private readonly rowButtonLocator ;
26
- private readonly columnButtonLocator ;
27
- private readonly cellMenus : Readonly < Record < YfmTableCellMenuType , Locator > > ;
28
- private readonly cellMenuActions : Readonly < Record < YfmTableActionKind , Locator > > ;
29
-
30
- constructor ( page : Page ) {
31
- this . tableWrapperLocator = page . getByTestId ( 'g-md-yfm-table-wrapper' ) ;
32
- this . buttonPlusRowLocator = page . getByTestId ( 'g-md-yfm-table-plus-row' ) ;
33
- this . buttonPlusColumnLocator = page . getByTestId ( 'g-md-yfm-table-plus-column' ) ;
34
-
35
- this . rowButtonLocator = page . getByTestId ( 'g-md-yfm-table-row-btn' ) ;
36
- this . columnButtonLocator = page . getByTestId ( 'g-md-yfm-table-column-btn' ) ;
37
- this . cellMenus = {
38
- row : page . getByTestId ( 'g-md-yfm-table-row-menu' ) ,
39
- column : page . getByTestId ( 'g-md-yfm-table-column-menu' ) ,
40
- } ;
41
- this . cellMenuActions = {
42
- 'add-column-after' : page . getByTestId ( 'g-md-yfm-table-action-add-column-after' ) ,
43
- 'add-column-before' : page . getByTestId ( 'g-md-yfm-table-action-add-column-before' ) ,
44
- 'add-row-after' : page . getByTestId ( 'g-md-yfm-table-action-add-row-after' ) ,
45
- 'add-row-before' : page . getByTestId ( 'g-md-yfm-table-action-add-row-before' ) ,
46
- 'remove-column' : page . getByTestId ( 'g-md-yfm-table-action-remove-column' ) ,
47
- 'remove-row' : page . getByTestId ( 'g-md-yfm-table-action-remove-row' ) ,
48
- 'remove-table' : page . getByTestId ( 'g-md-yfm-table-action-remove-table' ) ,
49
- } ;
50
- }
51
-
52
- getMenuLocator ( type : YfmTableCellMenuType ) {
53
- return this . cellMenus [ type ] ;
54
- }
55
-
56
- async getTable ( locator ?: Locator ) {
57
- return locator ?. locator ( this . tableWrapperLocator ) ?? this . tableWrapperLocator ;
58
- }
59
-
60
- async getRows ( table ?: Locator ) {
61
- return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( 'table > tbody > tr' ) ;
62
- }
63
-
64
- async getCells ( table ?: Locator ) {
65
- return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( 'table > tbody > tr > td' ) ;
66
- }
67
-
68
- async getRowButtons ( table ?: Locator ) {
69
- return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( this . rowButtonLocator ) ;
70
- }
71
-
72
- async getColumnButtons ( table ?: Locator ) {
73
- return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( this . columnButtonLocator ) ;
74
- }
75
-
76
- async doCellAction ( menuType : YfmTableCellMenuType , kind : YfmTableActionKind ) {
77
- const menu = this . cellMenus [ menuType ] ;
78
- await menu . waitFor ( { state : 'visible' } ) ;
79
- await menu . locator ( this . cellMenuActions [ kind ] ) . click ( ) ;
80
- await menu . waitFor ( { state : 'hidden' } ) ;
81
- }
82
-
83
- async clickPlusRow ( locator ?: Locator ) {
84
- const btnLoc = this . buttonPlusRowLocator ;
85
- const loc = locator ?. locator ( btnLoc ) ?? btnLoc ;
86
- await loc . click ( ) ;
87
- }
88
-
89
- async clickPlusColumn ( locator ?: Locator ) {
90
- const btnLoc = this . buttonPlusColumnLocator ;
91
- const loc = locator ?. locator ( btnLoc ) ?? btnLoc ;
92
- await loc . click ( ) ;
93
- }
94
- }
95
-
96
20
class Colorify {
97
21
protected readonly page : Page ;
98
22
protected readonly expect : Expect ;
@@ -166,6 +90,20 @@ class Image {
166
90
}
167
91
}
168
92
93
+ class Link {
94
+ protected readonly expect : Expect ;
95
+ protected readonly form : Locator ;
96
+
97
+ constructor ( page : Page , expect : Expect ) {
98
+ this . expect = expect ;
99
+ this . form = page . getByTestId ( 'g-md-link-form' ) ;
100
+ }
101
+
102
+ async assertFormToBeVisible ( ) {
103
+ await this . expect ( this . form ) . toBeVisible ( ) ;
104
+ }
105
+ }
106
+
169
107
class YfmNote {
170
108
protected readonly yfmNoteToolbar : Locator ;
171
109
@@ -179,6 +117,82 @@ class YfmNote {
179
117
}
180
118
}
181
119
120
+ class YfmTable {
121
+ readonly buttonPlusRowLocator ;
122
+ readonly buttonPlusColumnLocator ;
123
+ private readonly tableWrapperLocator ;
124
+
125
+ private readonly rowButtonLocator ;
126
+ private readonly columnButtonLocator ;
127
+ private readonly cellMenus : Readonly < Record < YfmTableCellMenuType , Locator > > ;
128
+ private readonly cellMenuActions : Readonly < Record < YfmTableActionKind , Locator > > ;
129
+
130
+ constructor ( page : Page ) {
131
+ this . tableWrapperLocator = page . getByTestId ( 'g-md-yfm-table-wrapper' ) ;
132
+ this . buttonPlusRowLocator = page . getByTestId ( 'g-md-yfm-table-plus-row' ) ;
133
+ this . buttonPlusColumnLocator = page . getByTestId ( 'g-md-yfm-table-plus-column' ) ;
134
+
135
+ this . rowButtonLocator = page . getByTestId ( 'g-md-yfm-table-row-btn' ) ;
136
+ this . columnButtonLocator = page . getByTestId ( 'g-md-yfm-table-column-btn' ) ;
137
+ this . cellMenus = {
138
+ row : page . getByTestId ( 'g-md-yfm-table-row-menu' ) ,
139
+ column : page . getByTestId ( 'g-md-yfm-table-column-menu' ) ,
140
+ } ;
141
+ this . cellMenuActions = {
142
+ 'add-column-after' : page . getByTestId ( 'g-md-yfm-table-action-add-column-after' ) ,
143
+ 'add-column-before' : page . getByTestId ( 'g-md-yfm-table-action-add-column-before' ) ,
144
+ 'add-row-after' : page . getByTestId ( 'g-md-yfm-table-action-add-row-after' ) ,
145
+ 'add-row-before' : page . getByTestId ( 'g-md-yfm-table-action-add-row-before' ) ,
146
+ 'remove-column' : page . getByTestId ( 'g-md-yfm-table-action-remove-column' ) ,
147
+ 'remove-row' : page . getByTestId ( 'g-md-yfm-table-action-remove-row' ) ,
148
+ 'remove-table' : page . getByTestId ( 'g-md-yfm-table-action-remove-table' ) ,
149
+ } ;
150
+ }
151
+
152
+ getMenuLocator ( type : YfmTableCellMenuType ) {
153
+ return this . cellMenus [ type ] ;
154
+ }
155
+
156
+ async getTable ( locator ?: Locator ) {
157
+ return locator ?. locator ( this . tableWrapperLocator ) ?? this . tableWrapperLocator ;
158
+ }
159
+
160
+ async getRows ( table ?: Locator ) {
161
+ return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( 'table > tbody > tr' ) ;
162
+ }
163
+
164
+ async getCells ( table ?: Locator ) {
165
+ return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( 'table > tbody > tr > td' ) ;
166
+ }
167
+
168
+ async getRowButtons ( table ?: Locator ) {
169
+ return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( this . rowButtonLocator ) ;
170
+ }
171
+
172
+ async getColumnButtons ( table ?: Locator ) {
173
+ return ( table || ( await this . getTable ( ) ) ) . first ( ) . locator ( this . columnButtonLocator ) ;
174
+ }
175
+
176
+ async doCellAction ( menuType : YfmTableCellMenuType , kind : YfmTableActionKind ) {
177
+ const menu = this . cellMenus [ menuType ] ;
178
+ await menu . waitFor ( { state : 'visible' } ) ;
179
+ await menu . locator ( this . cellMenuActions [ kind ] ) . click ( ) ;
180
+ await menu . waitFor ( { state : 'hidden' } ) ;
181
+ }
182
+
183
+ async clickPlusRow ( locator ?: Locator ) {
184
+ const btnLoc = this . buttonPlusRowLocator ;
185
+ const loc = locator ?. locator ( btnLoc ) ?? btnLoc ;
186
+ await loc . click ( ) ;
187
+ }
188
+
189
+ async clickPlusColumn ( locator ?: Locator ) {
190
+ const btnLoc = this . buttonPlusColumnLocator ;
191
+ const loc = locator ?. locator ( btnLoc ) ?? btnLoc ;
192
+ await loc . click ( ) ;
193
+ }
194
+ }
195
+
182
196
class MarkdownEditorLocators {
183
197
readonly component ;
184
198
readonly contenteditable ;
@@ -228,6 +242,7 @@ export class MarkdownEditorPage {
228
242
readonly colorify ;
229
243
readonly yfmNote ;
230
244
readonly image ;
245
+ readonly link ;
231
246
protected readonly page : Page ;
232
247
protected readonly expect : Expect ;
233
248
@@ -240,6 +255,7 @@ export class MarkdownEditorPage {
240
255
this . colorify = new Colorify ( page , expect , this . locators ) ;
241
256
this . yfmNote = new YfmNote ( page ) ;
242
257
this . image = new Image ( page ) ;
258
+ this . link = new Link ( page , expect ) ;
243
259
}
244
260
245
261
/**
0 commit comments