@@ -4,23 +4,90 @@ function getItemSelector(index) {
4
4
return `#mauvais_etat #id_adresseautocomplete-list.autocomplete-items div:nth-of-type(${ index } )`
5
5
}
6
6
7
- test ( "Desktop | La carte s'affiche sur une fiche déchet/objet" , async ( { page } ) => {
8
- // Navigate to the carte page
9
- await page . goto ( `/dechet/lave-linge` , { waitUntil : "networkidle" } ) ;
10
- await hideDjangoToolbar ( page )
7
+ async function searchOnProduitPage ( page , searchedAddress : string ) {
11
8
const inputSelector = "#mauvais_etat input#id_adresse"
12
- const adresseFill = "Auray"
9
+
13
10
// Autour de moi
14
11
await page . locator ( inputSelector ) . click ( ) ;
15
- await page . locator ( inputSelector ) . fill ( adresseFill ) ;
12
+ await page . locator ( inputSelector ) . fill ( searchedAddress ) ;
16
13
expect ( page . locator ( getItemSelector ( 1 ) ) . innerText ( ) ) . not . toBe ( "Autour de moi" )
17
14
await page . locator ( getItemSelector ( 1 ) ) . click ( ) ;
15
+ }
16
+
17
+ test ( "Desktop | La carte s'affiche sur une fiche déchet/objet" , async ( { page } ) => {
18
+ // Navigate to the carte page
19
+ await page . goto ( `/dechet/lave-linge` , { waitUntil : "networkidle" } ) ;
20
+ // await hideDjangoToolbar(page)
21
+ await searchOnProduitPage ( page , "Auray" )
18
22
const sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
19
- expect ( sessionStorage . adresse ) . toBe ( adresseFill )
23
+ expect ( sessionStorage . adresse ) . toBe ( "Auray" )
20
24
expect ( sessionStorage . latitude ) . toContain ( "47.6" )
21
25
expect ( sessionStorage . longitude ) . toContain ( "-2.9" )
26
+ } )
27
+
28
+ test . skip ( "Desktop | Le tracking PostHog fonctionne comme prévu" , async ( { page } ) => {
29
+ // Check that homepage scores 1
30
+ await page . goto ( `/` , { waitUntil : "networkidle" } ) ;
31
+ // await hideDjangoToolbar(page)
32
+ let sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
33
+ expect ( sessionStorage . homePageView ) . toBe ( "0" )
34
+
35
+ // Navigate to a produit page and check that it scores 1
36
+ await page . goto ( `/dechet/lave-linge` , { waitUntil : "networkidle" } ) ;
37
+ sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
38
+ expect ( sessionStorage . produitPageView ) . toBe ( "1" )
39
+
40
+ // Click on a pin on the map and check that it scores 1
41
+ await searchOnProduitPage ( page , "Auray" )
42
+ const markers = page . locator ( ".leaflet-marker-icon" )
43
+ // Remove the home marker (red dot) that prevents Playwright from clicking other markers
44
+ await page . evaluate ( ( ) => {
45
+ document . querySelector ( '.leaflet-marker-icon.home-icon' ) ?. remove ( )
46
+ } ) ;
47
+
48
+ // Ensure we have at least one marker, and let's click on a marker.
49
+ // The approach is feels cumbersome, this is because Playwright has a
50
+ // hard time clicking on leaflet markers.
51
+ // Hence the force option in click's method call.
52
+ await expect ( markers ?. nth ( 0 ) ) . toBeAttached ( )
53
+ const count = await markers ?. count ( )
54
+ for ( let i = 0 ; i < count ; i ++ ) {
55
+ const item = markers ?. nth ( i ) ;
56
+
57
+ try {
58
+ await item ! . click ( { force : true , timeout : 100 } ) ;
59
+ break
60
+ } catch ( e ) {
61
+ console . log ( "cannot click" , e )
62
+ }
63
+ }
64
+
65
+ sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
66
+ expect ( sessionStorage . userInteractionWithMap ) . toBe ( "1" )
67
+
68
+ // Click on another pin on the map and check that it scores 1 more (2 in total)
69
+ for ( let i = 0 ; i < count ; i ++ ) {
70
+ const item = markers ?. nth ( i ) ;
71
+
72
+ try {
73
+ await item ! . click ( { force : true , timeout : 100 } ) ;
74
+ break
75
+ } catch ( e ) {
76
+ console . log ( "cannot click" , e )
77
+ }
78
+ }
79
+
80
+ sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
81
+ expect ( sessionStorage . userInteractionWithMap ) . toBe ( "2" )
82
+
83
+ // Click on share button in solution details
84
+ await page . locator ( "#mauvais_etat [aria-describedby=mauvais_etat:shareTooltip]" ) . click ( )
85
+ sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
86
+ expect ( sessionStorage . userInteractionWithSolutionDetails ) . toBe ( "1" )
22
87
23
- // await expect(page.locator(".leaflet-marker-icon [data-animated]")).toBeVisible()
24
- // await page.locator(".leaflet-marker-icon [data-animated]").click()
25
- // expect(page.locator("#acteurDetailsPanel")).toBeVisible()
88
+ // Ensure that the scores does not increases after
89
+ // several homepage visits
90
+ await page . goto ( `/` , { waitUntil : "networkidle" } ) ;
91
+ sessionStorage = await page . evaluate ( ( ) => window . sessionStorage )
92
+ expect ( sessionStorage . homePageView ) . toBe ( "0" )
26
93
} )
0 commit comments