11import { test , expect } from '@playwright/test' ;
2- import { Config } from '../src/ui/types' ;
32import { OrejimePage } from './OrejimePage' ;
43
54test . describe ( 'Orejime' , ( ) => {
6- const BaseConfig : Partial < Config > = {
7- privacyPolicyUrl : 'https://example.org/privacy' ,
8- purposes : [
9- {
10- id : 'mandatory' ,
11- title : 'Mandatory' ,
12- cookies : [ 'mandatory' ] ,
13- isMandatory : true
14- } ,
5+ let orejimePage : OrejimePage ;
6+
7+ test . beforeEach ( async ( { page, context} ) => {
8+ orejimePage = new OrejimePage ( page , context ) ;
9+ await orejimePage . load (
1510 {
16- id : 'group' ,
17- title : 'Group' ,
11+ privacyPolicyUrl : 'https://example.org/privacy' ,
1812 purposes : [
1913 {
20- id : 'child-1' ,
21- title : 'First child' ,
22- cookies : [ 'child-1' ]
14+ id : 'mandatory' ,
15+ title : 'Mandatory' ,
16+ cookies : [ 'mandatory' ] ,
17+ isMandatory : true
2318 } ,
2419 {
25- id : 'child-2' ,
26- title : 'Second child' ,
27- cookies : [ 'child-2' ]
20+ id : 'group' ,
21+ title : 'Group' ,
22+ purposes : [
23+ {
24+ id : 'contextual' ,
25+ title : 'Contextual' ,
26+ cookies : [ 'contextual' ]
27+ } ,
28+ {
29+ id : 'other' ,
30+ title : 'Other' ,
31+ cookies : [ 'other' ]
32+ }
33+ ]
2834 }
2935 ]
30- }
31- ]
32- } ;
33-
34- const BaseScripts = `
35- <template data-purpose="mandatory">
36- <script id="mandatory"></script>
37- </template>
38-
39- <template data-purpose="child-1">
40- <iframe id="child-1"></iframe>
41- </template>
42- ` ;
43-
44- let orejimePage : OrejimePage ;
45-
46- test . beforeEach ( async ( { page, context} ) => {
47- orejimePage = new OrejimePage ( page , context ) ;
48- await orejimePage . load ( BaseConfig , BaseScripts ) ;
36+ } ,
37+ `
38+ <template data-purpose="contextual" data-contextual>
39+ <iframe id="contextual" src=""></iframe>
40+ </template>
41+
42+ <template data-purpose="mandatory">
43+ <script id="mandatory"></script>
44+ </template>
45+ `
46+ ) ;
4947 } ) ;
5048
5149 test ( 'should show a banner' , async ( ) => {
@@ -62,12 +60,12 @@ test.describe('Orejime', () => {
6260
6361 orejimePage . expectConsents ( {
6462 'mandatory' : true ,
65- 'child-1 ' : true ,
66- 'child-2 ' : true
63+ 'contextual ' : true ,
64+ 'other ' : true
6765 } ) ;
6866
6967 orejimePage . expectElement ( '#mandatory' ) ;
70- orejimePage . expectElement ( '#child-1 ' ) ;
68+ orejimePage . expectElement ( '#contextual ' ) ;
7169 } ) ;
7270
7371 test ( 'should decline all purposes from the banner' , async ( ) => {
@@ -76,12 +74,12 @@ test.describe('Orejime', () => {
7674
7775 orejimePage . expectConsents ( {
7876 'mandatory' : true ,
79- 'child-1 ' : false ,
80- 'child-2 ' : false
77+ 'contextual ' : false ,
78+ 'other ' : false
8179 } ) ;
8280
8381 orejimePage . expectElement ( '#mandatory' ) ;
84- orejimePage . expectMissingElement ( '#child-1 ' ) ;
82+ orejimePage . expectMissingElement ( '#contextual ' ) ;
8583 } ) ;
8684
8785 test ( 'should open a modal' , async ( ) => {
@@ -129,39 +127,39 @@ test.describe('Orejime', () => {
129127 test ( 'should accept all purposes from the modal' , async ( ) => {
130128 await orejimePage . openModalFromBanner ( ) ;
131129 await orejimePage . enableAllFromModal ( ) ;
132- await expect ( orejimePage . purposeCheckbox ( 'child-1 ' ) ) . toBeChecked ( ) ;
130+ await expect ( orejimePage . purposeCheckbox ( 'contextual ' ) ) . toBeChecked ( ) ;
133131 await expect ( orejimePage . purposeCheckbox ( 'mandatory' ) ) . toBeChecked ( ) ;
134132 await orejimePage . saveFromModal ( ) ;
135133
136134 orejimePage . expectConsents ( {
137135 'mandatory' : true ,
138- 'child-1 ' : true ,
139- 'child-2 ' : true
136+ 'contextual ' : true ,
137+ 'other ' : true
140138 } ) ;
141139 } ) ;
142140
143141 test ( 'should decline all purposes from the modal' , async ( ) => {
144142 await orejimePage . openModalFromBanner ( ) ;
145143 await orejimePage . enableAllFromModal ( ) ;
146144 await orejimePage . disableAllFromModal ( ) ;
147- await expect ( orejimePage . purposeCheckbox ( 'child-1 ' ) ) . not . toBeChecked ( ) ;
145+ await expect ( orejimePage . purposeCheckbox ( 'contextual ' ) ) . not . toBeChecked ( ) ;
148146 await expect ( orejimePage . purposeCheckbox ( 'mandatory' ) ) . toBeChecked ( ) ;
149147 await orejimePage . saveFromModal ( ) ;
150148
151149 orejimePage . expectConsents ( {
152150 'mandatory' : true ,
153- 'child-1 ' : false ,
154- 'child-2 ' : false
151+ 'contextual ' : false ,
152+ 'other ' : false
155153 } ) ;
156154 } ) ;
157155
158156 test ( 'should sync grouped purposes' , async ( ) => {
159157 await orejimePage . openModalFromBanner ( ) ;
160158
161- const checkbox = orejimePage . purposeCheckbox ( 'child-1 ' ) ;
159+ const checkbox = orejimePage . purposeCheckbox ( 'contextual ' ) ;
162160 await expect ( checkbox ) . not . toBeChecked ( ) ;
163161
164- const checkbox2 = orejimePage . purposeCheckbox ( 'child-2 ' ) ;
162+ const checkbox2 = orejimePage . purposeCheckbox ( 'other ' ) ;
165163 await expect ( checkbox2 ) . not . toBeChecked ( ) ;
166164
167165 const groupCheckbox = orejimePage . purposeCheckbox ( 'group' ) ;
@@ -181,4 +179,20 @@ test.describe('Orejime', () => {
181179 await expect ( checkbox ) . not . toBeChecked ( ) ;
182180 await expect ( checkbox2 ) . not . toBeChecked ( ) ;
183181 } ) ;
182+
183+ test ( 'should show a contextual consent notice' , async ( ) => {
184+ await orejimePage . expectElement ( '.orejime-ContextualNotice' ) ;
185+ } ) ;
186+
187+ test ( 'should accept contextual consent from the notice' , async ( ) => {
188+ await orejimePage . acceptContextualNotice ( ) ;
189+ await orejimePage . expectElement ( '#contextual' ) ;
190+ await orejimePage . expectMissingElement ( '.orejime-ContextualNotice' ) ;
191+ } ) ;
192+
193+ test ( 'should accept contextual consent from the banner' , async ( ) => {
194+ await orejimePage . acceptAllFromBanner ( ) ;
195+ await orejimePage . expectElement ( '#contextual' ) ;
196+ await orejimePage . expectMissingElement ( '.orejime-ContextualNotice' ) ;
197+ } ) ;
184198} ) ;
0 commit comments