Skip to content

Commit 0f52a33

Browse files
WIP: One Trust Test Case
1 parent 6cac5f9 commit 0f52a33

File tree

5 files changed

+111
-70
lines changed

5 files changed

+111
-70
lines changed
Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,79 @@
11
<!DOCTYPE html>
22
<html lang="en">
3+
4+
<head>
5+
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8"
6+
data-domain-script="80ca7b5c-e72f-4bd0-972a-b74d052a0820-test"></script>
7+
8+
<!-- <script src="/node_modules/@segment/analytics-consent-wrapper-onetrust/dist/umd/analytics-onetrust.umd.js"></script> -->
9+
<script src="dist/onetrust.bundle.js"></script>
10+
<!-- <script>
11+
!(function () {
12+
var analytics = (window.analytics = window.analytics || [])
13+
if (!analytics.initialize)
14+
if (analytics.invoked)
15+
window.console &&
16+
console.error &&
17+
console.error('Segment snippet included twice.')
18+
else {
19+
analytics.invoked = !0
20+
analytics.methods = [
21+
'trackSubmit',
22+
'trackClick',
23+
'trackLink',
24+
'trackForm',
25+
'pageview',
26+
'identify',
27+
'reset',
28+
'group',
29+
'track',
30+
'ready',
31+
'alias',
32+
'debug',
33+
'page',
34+
'once',
35+
'off',
36+
'on',
37+
'addSourceMiddleware',
38+
'addIntegrationMiddleware',
39+
'setAnonymousId',
40+
'addDestinationMiddleware',
41+
]
42+
analytics.factory = function (e) {
43+
return function () {
44+
var t = Array.prototype.slice.call(arguments)
45+
t.unshift(e)
46+
analytics.push(t)
47+
return analytics
48+
}
49+
}
50+
for (var e = 0; e < analytics.methods.length; e++) {
51+
var key = analytics.methods[e]
52+
analytics[key] = analytics.factory(key)
53+
}
54+
analytics.load = function (key, e) {
55+
var t = document.createElement('script')
56+
t.type = 'text/javascript'
57+
t.async = !0
58+
t.src = '/node_modules/@segment/analytics-next/dist/umd/standalone.js' // modified
59+
var n = document.getElementsByTagName('script')[0]
60+
n.parentNode.insertBefore(t, n)
61+
analytics._loadOptions = e
62+
}
63+
analytics._writeKey = 'foo'
64+
analytics.SNIPPET_VERSION = '4.15.3'
65+
66+
withOneTrust(analytics).load('foo') // modified
67+
analytics.page()
68+
}
69+
})()
70+
</script> -->
71+
</head>
72+
373
<body>
474
<h1>Hello World - Serving Analytics</h1>
575
<h2>Please Check Network tab</h2>
6-
<p>This page can used as playground or run by Playwright</p>
7-
<!-- <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8"
8-
data-domain-script="80ca7b5c-e72f-4bd0-972a-b74d052a0820-test"></script>
9-
<script src="https://cdn.jsdelivr.net/npm/@segment/analytics-consent-wrapper-onetrust@latest/dist/umd/analytics-onetrust.global.js"></script> -->
76+
<p>This page can used as playground or run by webdriver.io</p>
1077
</body>
11-
</html>
78+
79+
</html>

packages/consent/consent-tools-integration-tests/src/page-bundles/onetrust/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { AnalyticsBrowser } from '@segment/analytics-next'
2+
import { initMockConsentManager } from '../helpers/mock-cmp'
23
import { withMockCMP } from '../helpers/mock-cmp-wrapper'
34

5+
initMockConsentManager({
6+
consentModel: 'opt-in',
7+
})
8+
//import { withOneTrust } from '@segment/analytics-consent-wrapper-onetrust'
9+
10+
// declare global {
11+
// interface Window {
12+
// withOneTrust: typeof import('@segment/analytics-consent-wrapper-onetrust').withOneTrust
13+
// }
14+
// }
15+
// window.withOneTrust = withOneTrust
16+
417
const analytics = new AnalyticsBrowser()
518

619
withMockCMP(analytics).load(

packages/consent/consent-tools-integration-tests/src/page-objects/base-page.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export abstract class BasePage {
4949
return this.fetchIntegrationReqs
5050
}
5151

52-
private async mockAPIs() {
52+
protected async mockAPIs() {
5353
await this.mockSegmentTrackingAPI()
5454
await this.mockCDNSettingsAPI()
5555
await this.mockNextIntegrationsAPI()
Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,15 @@
1-
// page-objects/onetrust.ts
2-
import { Page } from '@playwright/test'
31
import { BasePage } from './base-page'
2+
import { Page } from '@playwright/test'
43

5-
class OneTrustPage extends BasePage {
4+
export default class OneTrustPage extends BasePage {
65
constructor(page: Page) {
76
super(page, 'consent-tools-onetrust.html')
87
}
98

10-
// Check for global variable `window.isOneTrustLoaded`
11-
async isOneTrustLoaded(): Promise<boolean> {
12-
return await this.page.evaluate(() => {
13-
return Boolean((window as any).isOneTrustLoaded)
14-
})
15-
}
16-
17-
async clickGiveConsent() {
18-
//await this.page.click('#onetrust-accept-btn-handler')
19-
const acceptButton = this.page.locator('#onetrust-accept-btn-handler')
20-
await acceptButton.waitFor({ state: 'visible' }) // Ensure the button is visible
9+
async clickAcceptButtonAndClosePopup() {
10+
const acceptButton = await this.page.locator('#onetrust-accept-btn-handler')
2111
await acceptButton.click()
2212
}
23-
24-
async clickDenyConsent() {
25-
const rejectButton = await this.page.locator('#onetrust-reject-all-handler')
26-
await rejectButton.waitFor({ state: 'visible' }) // Ensure the button is visible
27-
await rejectButton.click()
28-
}
2913
}
3014

31-
export class OneTrustConsentPage extends OneTrustPage {
32-
constructor(page: Page) {
33-
super(page)
34-
}
35-
}
15+
//export default (page: Page) => new OneTrustPage(page)
Lines changed: 19 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,27 @@
11
import { test, expect } from '@playwright/test'
2-
import { OneTrustConsentPage } from '../page-objects/onetrust'
2+
import OneTrustPage from '../page-objects/onetrust'
33

4-
// Setup for your page object
5-
let pageObject: OneTrustConsentPage
4+
test.describe('OneTrust Consent Tests', () => {
5+
let pageObject: OneTrustPage
66

7-
test.beforeEach(async ({ page: p }) => {
8-
// Initialize the page object
9-
pageObject = new OneTrustConsentPage(p)
7+
test.beforeEach(async ({ page }) => {
8+
pageObject = new OneTrustPage(page)
9+
await pageObject.load()
10+
})
1011

11-
// Load the page
12-
await pageObject.load()
13-
})
14-
15-
test.afterEach(async () => {
16-
await pageObject.cleanup()
17-
})
18-
19-
test('should send a consent changed event when user clicks accept on popup', async ({
20-
page,
21-
}) => {
22-
// Pause for a brief moment if needed
23-
await page.waitForTimeout(1000)
24-
25-
// Check that no consent changed event is initially sent
26-
const consentChangedEvents = pageObject.getConsentChangedEvents()
27-
expect(consentChangedEvents.length).toBe(0)
28-
29-
await page.waitForSelector('#onetrust-accept-btn-handler', { timeout: 5000 })
12+
test.afterEach(async () => {
13+
await pageObject.cleanup()
14+
})
3015

31-
// Make a consent selection in the OneTrust popup
32-
await pageObject.clickGiveConsent()
16+
test('should send a consent changed event when user clicks accept on popup', async () => {
17+
expect(pageObject.getConsentChangedEvents().length).toBe(0)
3318

34-
await page.waitForTimeout(2000)
35-
// Optional: print all tracking events for debug purposes
36-
console.log('All tracking events so far:', pageObject.getAllTrackingEvents())
37-
// // Wait for the consent changed event to be sent using poll and a timeout
38-
// await expect
39-
// .poll(() => pageObject.getConsentChangedEvents().length, {
40-
// timeout: 10_000, // Timeout after 10 seconds
41-
// })
42-
// .toBeGreaterThan(0) // Ensure the consent event count increases
19+
await pageObject.clickAcceptButtonAndClosePopup()
4320

44-
// // Ensure that exactly 1 consent changed event was sent
45-
// const updatedConsentChangedEvents = pageObject.getConsentChangedEvents()
46-
// expect(updatedConsentChangedEvents.length).toBe(1)
21+
await expect
22+
.poll(() => pageObject.getConsentChangedEvents().length, {
23+
timeout: 5000,
24+
})
25+
.toBe(1)
26+
})
4727
})

0 commit comments

Comments
 (0)