Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quantum-kittens
GitHub Repository: quantum-kittens/platypus
Path: blob/main/cypress/integration/all-pages.spec.js
3855 views
1
/// <reference types="cypress" />
2
3
const sitemapJson = require('../../public/sitemap.json')
4
const sitemapUrlsDefaultBase = 'qiskit.org'
5
6
const urlsFromSitemap = sitemapJson.urlset.url
7
.filter(({ loc }) => loc[0].includes('/course'))
8
.map(({ loc }) => {
9
const url = loc[0]
10
const relativeUrl = url.substring(
11
url.indexOf(sitemapUrlsDefaultBase) + sitemapUrlsDefaultBase.length
12
)
13
return relativeUrl
14
})
15
16
describe('All pages', () => {
17
it('are accounted for', () => {
18
cy.request('courseList/').then((response) => {
19
const courseList = response.body
20
const courseUrls = []
21
const courseProblemSets = []
22
const sitemapUrls = []
23
24
// loop through courseList splitting problem-sets from courses
25
courseList.forEach(({ url, sections }) => {
26
if (url.startsWith('/problem-sets')) {
27
sections.forEach(({ id }) => {
28
courseProblemSets.push(id)
29
})
30
} else {
31
sections.forEach(({ pageUrl }) => {
32
courseUrls.push(pageUrl)
33
})
34
}
35
})
36
const urlsFromCourseList = [...new Set(courseUrls)]
37
38
// loop through sitemap skipping problem-sets
39
urlsFromSitemap.forEach((url) => {
40
if (courseProblemSets.indexOf(url.split('/')[2]) == -1) {
41
sitemapUrls.push(url)
42
}
43
})
44
45
// make sure course list from sitemap matches course list from API (minus problem-sets)
46
urlsFromCourseList.sort()
47
sitemapUrls.sort()
48
expect(urlsFromCourseList).to.deep.eq(sitemapUrls)
49
})
50
})
51
52
urlsFromSitemap.forEach((url, i) => {
53
it(`should retrieve and no mathjax error: ${url}`, () => {
54
cy.request(url).as(`req${i}`)
55
56
cy.get(`@req${i}`).should((response) => {
57
expect(response.status).to.eq(200)
58
expect(response.body).not.to.include('mjx-merror')
59
})
60
})
61
})
62
})
63
64