-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathhome.spec.js
More file actions
66 lines (57 loc) · 1.74 KB
/
home.spec.js
File metadata and controls
66 lines (57 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// @ts-check
import path from 'path'
import fs from 'fs'
import { test, expect } from '@chromatic-com/playwright'
const mockRepoDataPath = path.resolve(
__dirname,
'mock-data',
'github-repo.json'
)
const mockRepoData = fs.readFileSync(mockRepoDataPath, 'utf-8')
const mockCommitsDataPath = path.resolve(
__dirname,
'mock-data',
'github-commits.json'
)
const mockCommitsData = fs.readFileSync(mockCommitsDataPath, 'utf-8')
test('Home Page', async ({ page }) => {
// Mock GitHub repo metadata used by Header.getTotalCommits()
await page.route('https://api.github.com/repos/ossf/scorecard', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: mockRepoData,
})
})
// Mock commits endpoint used by Header.fetchData()
await page.route(
'https://api.github.com/repos/ossf/scorecard/commits*',
(route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: mockCommitsData,
})
}
)
await page.goto('http://localhost:3000/')
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/OpenSSF Scorecard/)
// Check the video player is present and in autoplay mode
const videoElement = page.locator('video:visible')
await expect(videoElement).toBeVisible()
const autoplay = await videoElement.getAttribute('autoplay')
expect(autoplay).not.toBeNull()
// Hide all video players for consistent screenshots
await page.evaluate(() => {
document
.querySelectorAll('video')
.forEach((v) => (v.style.display = 'none'))
})
// Prevent Visual Regressions
if (process.env.ENABLE_SNAPSHOTS) {
expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(
'home.png'
)
}
})