Path: blob/main/cypress/integration/all-pages.spec.js
3855 views
/// <reference types="cypress" />12const sitemapJson = require('../../public/sitemap.json')3const sitemapUrlsDefaultBase = 'qiskit.org'45const urlsFromSitemap = sitemapJson.urlset.url6.filter(({ loc }) => loc[0].includes('/course'))7.map(({ loc }) => {8const url = loc[0]9const relativeUrl = url.substring(10url.indexOf(sitemapUrlsDefaultBase) + sitemapUrlsDefaultBase.length11)12return relativeUrl13})1415describe('All pages', () => {16it('are accounted for', () => {17cy.request('courseList/').then((response) => {18const courseList = response.body19const courseUrls = []20const courseProblemSets = []21const sitemapUrls = []2223// loop through courseList splitting problem-sets from courses24courseList.forEach(({ url, sections }) => {25if (url.startsWith('/problem-sets')) {26sections.forEach(({ id }) => {27courseProblemSets.push(id)28})29} else {30sections.forEach(({ pageUrl }) => {31courseUrls.push(pageUrl)32})33}34})35const urlsFromCourseList = [...new Set(courseUrls)]3637// loop through sitemap skipping problem-sets38urlsFromSitemap.forEach((url) => {39if (courseProblemSets.indexOf(url.split('/')[2]) == -1) {40sitemapUrls.push(url)41}42})4344// make sure course list from sitemap matches course list from API (minus problem-sets)45urlsFromCourseList.sort()46sitemapUrls.sort()47expect(urlsFromCourseList).to.deep.eq(sitemapUrls)48})49})5051urlsFromSitemap.forEach((url, i) => {52it(`should retrieve and no mathjax error: ${url}`, () => {53cy.request(url).as(`req${i}`)5455cy.get(`@req${i}`).should((response) => {56expect(response.status).to.eq(200)57expect(response.body).not.to.include('mjx-merror')58})59})60})61})626364