@@ -7,6 +7,7 @@ jest.setTimeout(30000);
7
7
beforeEach ( async ( ) => {
8
8
browser = await playwright [ browserType ] . launch ( {
9
9
headless : ISHEADLESS ,
10
+ slowMo : 50 ,
10
11
} ) ;
11
12
context = await browser . newContext ( ) ;
12
13
page = await context . newPage ( ) ;
@@ -32,103 +33,79 @@ jest.setTimeout(30000);
32
33
dataTransfer,
33
34
} ) ;
34
35
await page . hover ( ".leaflet-top.leaflet-right" ) ;
35
- let vars = await page . $$ ( "[draggable='true'] " ) ;
36
- expect ( vars . length ) . toBe ( 1 ) ;
36
+ let vars = await page . $$ ( "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset " ) ;
37
+ expect ( vars . length ) . toBe ( 3 ) ;
37
38
} ) ;
38
39
39
40
test ( "[" + browserType + "]" + " Drag and drop of layers" , async ( ) => {
40
- const dataTransfer = await page . evaluateHandle (
41
- ( ) => new DataTransfer ( )
42
- ) ;
43
41
await page . hover ( ".leaflet-top.leaflet-right" ) ;
44
- await page . dispatchEvent ( "[draggable='true']" , "dragstart" , {
45
- dataTransfer ,
46
- } ) ;
47
- await page . dispatchEvent ( ".leaflet-top.leaflet-right" , "drop" , {
48
- dataTransfer ,
49
- } ) ;
42
+ let control = await page . $ ( "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(1)" ) ;
43
+ let controlBBox = await control . boundingBox ( ) ;
44
+ await page . mouse . move ( controlBBox . x + controlBBox . width / 2 , controlBBox . y + controlBBox . height / 2 ) ;
45
+ await page . mouse . down ( ) ;
46
+ await page . mouse . move ( 50 , 50 ) ;
47
+ await page . mouse . up ( ) ;
50
48
await page . hover ( ".leaflet-top.leaflet-right" ) ;
51
- let vars = await page . $$ ( "[draggable='true'] " ) ;
52
- expect ( vars . length ) . toBe ( 2 ) ;
49
+ let vars = await page . $$ ( "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset " ) ;
50
+ expect ( vars . length ) . toBe ( 3 ) ;
53
51
} ) ;
54
52
55
- /* Comment in later on
56
- test("drag and drop of null object", async () => {
57
- const dataTransfer = await page.evaluateHandle(
58
- () => new DataTransfer()
59
- );
60
- await page.hover(".leaflet-top.leaflet-right");
61
- await page.dispatchEvent(".leaflet-control-zoom-in", "dragstart", {
62
- dataTransfer,
63
- });
64
- await page.dispatchEvent(".leaflet-top.leaflet-right", "drop", {
65
- dataTransfer,
53
+ test ( "[" + browserType + "]" + " Moving layer down one in control overlay" , async ( ) => {
54
+ await page . hover ( ".leaflet-top.leaflet-right" ) ;
55
+ let control = await page . $ ( "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(1)" ) ;
56
+ let controlBBox = await control . boundingBox ( ) ;
57
+ await page . mouse . move ( controlBBox . x + controlBBox . width / 2 , controlBBox . y + controlBBox . height / 2 ) ;
58
+ await page . mouse . down ( ) ;
59
+ await page . mouse . move ( controlBBox . x + controlBBox . width / 2 , ( controlBBox . y + controlBBox . height / 2 ) + 45 ) ;
60
+ await page . mouse . up ( ) ;
61
+ await page . hover ( ".leaflet-top.leaflet-right" ) ;
62
+
63
+ const controlText = await page . $eval (
64
+ "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(2) > details > summary > label > span" ,
65
+ ( span ) => span . innerText
66
+ ) ;
67
+ const layerIndex = await page . $eval (
68
+ "xpath=//html/body/map >> css=div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-overlay-pane > div:nth-child(1)" ,
69
+ ( div ) => div . style . zIndex
70
+ ) ;
71
+ const domLayer = await page . $eval (
72
+ "body > map > layer-:nth-child(4)" ,
73
+ ( div ) => div . label
74
+ ) ;
75
+
76
+ expect ( controlText . toLowerCase ( ) ) . toContain ( domLayer . toLowerCase ( ) ) ;
77
+ expect ( layerIndex ) . toEqual ( "2" ) ;
78
+ expect ( controlText ) . toBe ( " Canada Base Map - Transportation (CBMT)" ) ;
66
79
} ) ;
67
- await page.hover(".leaflet-top.leaflet-right");
68
- let vars = await page.$$("[draggable='true']");
69
- expect(vars.length).toBe(1);
70
- });
71
- */
72
80
73
- //adding layer in html can add any type of layer the user wants,
74
- //but how should that layer get treated by the map element,
75
- //should it be ignored or shown as undefined
76
- /*
77
- test("HTML - add additional MapML Layer", async () => {
78
- const { document } = new JSDOM(`
79
- <!doctype html>
80
- <html>
81
- <head>
82
- <title>index-map.html</title>
83
- <meta charset="UTF-8">
84
- <script type="module" src="dist/web-map.js"></script>
85
- <style>
86
- html {height: 100%} body,map {height: inherit} * {margin: 0;padding: 0;}
87
- </style>
88
- </head>
89
- <body>
90
- <map is="web-map" projection="CBMTILE" zoom="2" lat="45" lon="-90" controls >
91
- <layer- label='CBMT' src='https://geogratis.gc.ca/mapml/en/cbmtile/cbmt/' checked></layer->
92
- <layer- label='CBMT' src='https://geogratis.gc.ca/mapml/en/cbmtile/cbmt/' checked></layer->
93
- </map>
94
- </body>
95
- </html>
96
- `).window;
97
- const { select, update } = await domToPlaywright(page, document);
81
+ test ( "[" + browserType + "]" + " Moving layer up one in control overlay" , async ( ) => {
82
+ await page . hover ( ".leaflet-top.leaflet-right" ) ;
83
+ let control = await page . $ ( "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(2)" ) ;
84
+ let controlBBox = await control . boundingBox ( ) ;
85
+ await page . mouse . move ( controlBBox . x + controlBBox . width / 2 , controlBBox . y + controlBBox . height / 2 ) ;
86
+ await page . mouse . down ( ) ;
87
+ await page . mouse . move ( controlBBox . x + controlBBox . width / 2 , ( controlBBox . y + controlBBox . height / 2 ) - 45 ) ;
88
+ await page . mouse . up ( ) ;
89
+ await page . hover ( ".leaflet-top.leaflet-right" ) ;
98
90
99
- await update(document);
100
- await page.hover(".leaflet-top.leaflet-right");
101
- let vars = await page.$$("[draggable='true']");
102
- expect(vars.length).toBe(2);
103
- });
104
- test("HTML - add additional non-MapML Layer", async () => {
105
- const { document } = new JSDOM(`
106
- <!doctype html>
107
- <html>
108
- <head>
109
- <title>index-map.html</title>
110
- <meta charset="UTF-8">
111
- <script type="module" src="dist/web-map.js"></script>
112
- <style>
113
- html {height: 100%} body,map {height: inherit} * {margin: 0;padding: 0;}
114
- </style>
115
- </head>
116
- <body>
117
- <map is="web-map" projection="CBMTILE" zoom="2" lat="45" lon="-90" controls >
118
- <layer- label='CBMT' src='https://geogratis.gc.ca/mapml/en/cbmtile/cbmt/' checked></layer->
119
- <layer- label='CBMT' src='https://example.com/' checked></layer->
120
- </map>
121
- </body>
122
- </html>
123
- `).window;
124
- const { select, update } = await domToPlaywright(page, document);
91
+ const controlText = await page . $eval (
92
+ "xpath=//html/body/map >> css=div > div.leaflet-control-container > div.leaflet-top.leaflet-right > div > section > div.leaflet-control-layers-overlays > fieldset:nth-child(1) > details > summary > label > span" ,
93
+ ( span ) => span . innerText
94
+ ) ;
95
+ const layerIndex = await page . $eval (
96
+ "xpath=//html/body/map >> css=div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-overlay-pane > div:nth-child(2)" ,
97
+ ( div ) => div . style . zIndex
98
+ ) ;
99
+ const domLayer = await page . $eval (
100
+ "body > map > layer-:nth-child(3)" ,
101
+ ( div ) => div . label
102
+ ) ;
103
+
104
+ expect ( controlText . toLowerCase ( ) ) . toContain ( domLayer . toLowerCase ( ) ) ;
105
+ expect ( layerIndex ) . toEqual ( "1" ) ;
106
+ expect ( controlText ) . toBe ( " Static MapML With Tiles" ) ;
107
+ } ) ;
125
108
126
- await update(document);
127
- await page.hover(".leaflet-top.leaflet-right");
128
- let vars = await page.$$("[draggable='true']");
129
- expect(vars.length).toBe(1);
130
- });
131
- */
132
109
} ) ;
133
110
}
134
- } ) ( ) ;
111
+ } ) ( ) ;
0 commit comments