@@ -10,26 +10,20 @@ test.describe('Playwright Layer Context Menu Tests', () => {
1010 context . pages ( ) . find ( ( page ) => page . url ( ) === 'about:blank' ) ||
1111 ( await context . newPage ( ) ) ;
1212 await page . goto ( 'layerContextMenu.html' ) ;
13+ await page . waitForTimeout ( 250 ) ;
1314 } ) ;
1415
1516 test . afterAll ( async function ( ) {
1617 await context . close ( ) ;
1718 } ) ;
1819
19- test . beforeEach ( async ( ) => {
20- await page . waitForTimeout ( 250 ) ;
21- } ) ;
2220 test ( 'Layer context menu shows when layer is clicked' , async ( ) => {
23- await page . hover (
24- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
25- ) ;
26- await page . click (
27- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div \n\
28- > section > div.leaflet-control-layers-overlays > fieldset:nth-child(1) > \n\
29- div:nth-child(1) > label > span' ,
30- { button : 'right' }
31- ) ;
21+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
22+ await layerControl . hover ( ) ;
23+ const cbmtLayer = await page . getByText ( 'CBMT - INLINE' ) ;
24+ cbmtLayer . click ( { button : 'right' } ) ;
3225
26+ await page . waitForTimeout ( 200 ) ;
3327 const aHandle = await page . evaluateHandle ( ( ) =>
3428 document . querySelector ( 'mapml-viewer' )
3529 ) ;
@@ -54,39 +48,34 @@ test.describe('Playwright Layer Context Menu Tests', () => {
5448 } ) ;
5549
5650 test ( 'Layer context menu copy layer' , async ( ) => {
57- await page . hover (
58- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
59- ) ;
60- await page . click (
61- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div \n\
62- > section > div.leaflet-control-layers-overlays > fieldset:nth-child(1) > \n\
63- div:nth-child(1) > label > span' ,
64- { button : 'right' }
65- ) ;
66-
51+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
52+ await layerControl . hover ( ) ;
53+ const cbmtLayer = await page . getByText ( 'CBMT - INLINE' ) ;
54+ await cbmtLayer . click ( { button : 'right' } ) ;
6755 await page . keyboard . press ( 'l' ) ;
68- await page . click ( 'body > textarea#messageLayer' ) ;
56+ const mesageLayerArea = page . getByTestId ( 'messageLayer' ) ;
57+ await mesageLayerArea . focus ( ) ;
6958 await page . keyboard . press ( 'Control+v' ) ;
70- const copyLayer = await page . $eval (
71- 'body > textarea#messageLayer' ,
72- ( text ) => text . value
73- ) ;
74-
59+ const copyLayer = await mesageLayerArea . evaluate ( ( text ) => text . value ) ;
7560 expect ( copyLayer ) . toEqual (
76- '<layer- label="CBMT - INLINE" checked="">\n <map-link rel="license" title="Testing Inc."></map-link>\n <map-extent units="CBMTILE" checked="">\n <map-input name="zoomLevel" type="zoom" value="3" min="0" max="3"></map-input>\n <map-input name="row" type="location" axis="row" units="tilematrix" min="14" max="21"></map-input>\n <map-input name="col" type="location" axis="column" units="tilematrix" min="14" max="19"></map-input>\n <map-link rel="tile" tref="http://localhost:30001/data/cbmt/{zoomLevel}/c{col}_r{row}.png"></map-link>\n </map-extent>\n </layer->'
61+ `<layer- label="CBMT - INLINE" checked="">
62+ <map-link rel="license" title="Testing Inc."></map-link>
63+ <map-extent units="CBMTILE" checked="">
64+ <map-input name="zoomLevel" type="zoom" value="3" min="0" max="3"></map-input>
65+ <map-input name="row" type="location" axis="row" units="tilematrix" min="14" max="21"></map-input>
66+ <map-input name="col" type="location" axis="column" units="tilematrix" min="14" max="19"></map-input>
67+ <map-link rel="tile" tref="http://localhost:30001/data/cbmt/{zoomLevel}/c{col}_r{row}.png"></map-link>
68+ </map-extent>
69+ </layer->`
7770 ) ;
7871 } ) ;
7972
8073 test ( 'Map zooms in to layer 2' , async ( ) => {
81- await page . hover (
82- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
83- ) ;
84- await page . click (
85- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div \n\
86- > section > div.leaflet-control-layers-overlays > fieldset:nth-child(2) > \n\
87- div:nth-child(1) > label > span' ,
88- { button : 'right' , force : true }
89- ) ;
74+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
75+ await layerControl . hover ( ) ;
76+ const layer2 = page . getByText ( 'Layer 2' ) ;
77+ await layer2 . click ( { button : 'right' , force : true } ) ;
78+
9079 await page . keyboard . press ( 'z' ) ;
9180 await page . waitForTimeout ( 1000 ) ;
9281 const mapZoom = await page
@@ -103,15 +92,11 @@ test.describe('Playwright Layer Context Menu Tests', () => {
10392 } ) ;
10493
10594 test ( 'Map zooms out to layer 3' , async ( ) => {
106- await page . hover (
107- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
108- ) ;
109- await page . click (
110- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > \n\
111- div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(3) \n\
112- > div:nth-child(1) > label > span' ,
113- { button : 'right' , force : true }
114- ) ;
95+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
96+ await layerControl . hover ( ) ;
97+ const layer3 = page . getByText ( 'Layer 3' ) ;
98+ await layer3 . click ( { button : 'right' , force : true } ) ;
99+
115100 await page . keyboard . press ( 'z' ) ;
116101 await page . waitForTimeout ( 3000 ) ;
117102 const mapLocation = await page . $eval ( 'body > mapml-viewer' , ( text ) =>
@@ -130,15 +115,11 @@ test.describe('Playwright Layer Context Menu Tests', () => {
130115 } ) ;
131116
132117 test ( 'Map zooms out to layer 4' , async ( ) => {
133- await page . hover (
134- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
135- ) ;
136- await page . click (
137- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > \n\
138- div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(4) \n\
139- > div:nth-child(1) > label > span' ,
140- { button : 'right' , force : true }
141- ) ;
118+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
119+ await layerControl . hover ( ) ;
120+ const layer4 = page . getByText ( 'Layer 4' ) ;
121+ await layer4 . click ( { button : 'right' , force : true } ) ;
122+
142123 await page . keyboard . press ( 'z' ) ;
143124 await page . waitForTimeout ( 3000 ) ;
144125 const mapLocation = await page . $eval ( 'body > mapml-viewer' , ( text ) =>
@@ -157,38 +138,30 @@ test.describe('Playwright Layer Context Menu Tests', () => {
157138
158139 test ( 'Copy layer with relative src attribute' , async ( ) => {
159140 await page . reload ( ) ;
160- await page . hover (
161- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
162- ) ;
163- await page . click (
164- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > \n\
165- div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(5) \n\
166- > div:nth-child(1) > label > span' ,
167- { button : 'right' }
168- ) ;
141+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
142+ await layerControl . hover ( ) ;
143+ const pseudotsuga = await layerControl . getByText ( 'Genus Pseudotsuga' ) ;
144+ await pseudotsuga . click ( { button : 'right' } ) ;
169145
170146 await page . keyboard . press ( 'l' ) ;
171- await page . click ( 'body > textarea#messageLayer' ) ;
147+ const mesageLayerArea = page . getByTestId ( 'messageLayer' ) ;
148+ await mesageLayerArea . focus ( ) ;
172149 // reload is better than deleting text, because of cross-platform issue
173150 // with copy-pasting text on Windows/Linux
174151 // await page.keyboard.press('Control+a');
175152 // await page.keyboard.press('Backspace');
176153 await page . keyboard . press ( 'Control+v' ) ;
177154 await page . waitForTimeout ( 1000 ) ;
178- const copyLayer = await page . $eval (
179- 'body > textarea#messageLayer' ,
180- ( text ) => text . value
181- ) ;
155+ const copyLayer = await mesageLayerArea . evaluate ( ( text ) => text . value ) ;
182156
183157 expect ( copyLayer ) . toEqual (
184158 '<layer- src="http://localhost:30001/data/query/DouglasFir" label="Natural Resources Canada - Douglas Fir (Genus Pseudotsuga) 250m resolution"></layer->'
185159 ) ;
186160 } ) ;
187161
188162 test ( 'Map Extent context menu shows when extent layer is right clicked' , async ( ) => {
189- await page . hover (
190- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
191- ) ;
163+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
164+ await layerControl . hover ( ) ;
192165 await page
193166 . getByRole ( 'group' , { name : 'CBMT - INLINE' } )
194167 . getByTitle ( 'Layer Settings' )
@@ -232,23 +205,20 @@ test.describe('Playwright Layer Context Menu Tests', () => {
232205 } ) ;
233206
234207 await page . keyboard . press ( 'l' ) ;
235- await page . click ( 'body > textarea#messageLayer' ) ;
208+ const mesageLayerArea = page . getByTestId ( 'messageLayer' ) ;
209+ await mesageLayerArea . focus ( ) ;
236210 await page . keyboard . press ( 'Control+a' ) ;
237211 await page . keyboard . press ( 'Control+v' ) ;
238- const copyLayer = await page . $eval (
239- 'body > textarea#messageLayer' ,
240- ( text ) => text . value
241- ) ;
212+ const copyLayer = await mesageLayerArea . evaluate ( ( text ) => text . value ) ;
242213
243214 expect ( copyLayer ) . toEqual (
244215 '<map-extent units="CBMTILE" checked="">\n <map-input name="zoomLevel" type="zoom" value="3" min="0" max="3"></map-input>\n <map-input name="row" type="location" axis="row" units="tilematrix" min="14" max="21"></map-input>\n <map-input name="col" type="location" axis="column" units="tilematrix" min="14" max="19"></map-input>\n <map-link rel="tile" tref="http://localhost:30001/data/cbmt/{zoomLevel}/c{col}_r{row}.png"></map-link>\n </map-extent>'
245216 ) ;
246217 } ) ;
247218
248219 test ( 'Map zooms to extent layer' , async ( ) => {
249- await page . hover (
250- 'div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div'
251- ) ;
220+ const layerControl = page . locator ( '.leaflet-control-layers' ) ;
221+ await layerControl . hover ( ) ;
252222 await page
253223 . getByRole ( 'group' , { name : 'Sub-layer' } )
254224 . locator ( 'label' )
0 commit comments