Files
metrics/tests/mocks/api/axios/get/pagespeed.mjs
2023-07-24 20:30:19 -04:00

111 lines
4.6 KiB
JavaScript

/**Mocked data */
export default function({faker, url, options, login = faker.internet.userName()}) {
//Tested url
const tested = url.match(/&url=(?<tested>.*?)(?:&|$)/)?.groups?.tested ?? faker.internet.url()
//Pagespeed api
if (/^https:..www.googleapis.com.pagespeedonline.v5.*$/.test(url)) {
//Pagespeed result
if (/v5.runPagespeed.*&key=MOCKED_TOKEN/.test(url)) {
console.debug(`metrics/compute/mocks > mocking pagespeed api result > ${url}`)
return ({
status: 200,
data: {
captchaResult: "CAPTCHA_NOT_NEEDED",
id: tested,
lighthouseResult: {
requestedUrl: tested,
finalUrl: tested,
lighthouseVersion: "6.3.0",
audits: {
"final-screenshot": {
id: "final-screenshot",
title: "Final Screenshot",
score: null,
details: {
data: null,
type: "screenshot",
timestamp: Date.now(),
},
},
metrics: {
id: "metrics",
title: "Metrics",
score: null,
details: {
items: [
{
observedFirstContentfulPaint: faker.number.int(500),
observedFirstVisualChangeTs: faker.date.recent(),
observedFirstContentfulPaintTs: faker.date.recent(),
firstContentfulPaint: faker.number.int(500),
observedDomContentLoaded: faker.number.int(500),
observedFirstMeaningfulPaint: faker.number.int(1000),
maxPotentialFID: faker.number.int(500),
observedLoad: faker.number.int(500),
firstMeaningfulPaint: faker.number.int(500),
observedCumulativeLayoutShift: faker.datatype.float({max: 1}),
observedSpeedIndex: faker.number.int(1000),
observedSpeedIndexTs: faker.date.recent(),
observedTimeOriginTs: faker.date.recent(),
observedLargestContentfulPaint: faker.number.int(1000),
cumulativeLayoutShift: faker.datatype.float({max: 1}),
observedFirstPaintTs: faker.date.recent(),
observedTraceEndTs: faker.date.recent(),
largestContentfulPaint: faker.number.int(2000),
observedTimeOrigin: faker.number.int(10),
speedIndex: faker.number.int(1000),
observedTraceEnd: faker.number.int(2000),
observedDomContentLoadedTs: faker.date.recent(),
observedFirstPaint: faker.number.int(500),
totalBlockingTime: faker.number.int(500),
observedLastVisualChangeTs: faker.date.recent(),
observedFirstVisualChange: faker.number.int(500),
observedLargestContentfulPaintTs: faker.date.recent(),
estimatedInputLatency: faker.number.int(100),
observedLoadTs: faker.date.recent(),
observedLastVisualChange: faker.number.int(1000),
firstCPUIdle: faker.number.int(1000),
interactive: faker.number.int(1000),
observedNavigationStartTs: faker.date.recent(),
observedNavigationStart: faker.number.int(10),
observedFirstMeaningfulPaintTs: faker.date.recent(),
},
],
},
},
},
categories: {
"best-practices": {
id: "best-practices",
title: "Best Practices",
score: faker.datatype.float({max: 1}),
},
seo: {
id: "seo",
title: "SEO",
score: faker.datatype.float({max: 1}),
},
accessibility: {
id: "accessibility",
title: "Accessibility",
score: faker.datatype.float({max: 1}),
},
performance: {
id: "performance",
title: "Performance",
score: faker.datatype.float({max: 1}),
},
pwa: {
id: "pwa",
title: "PWA",
score: faker.number.int({max: 1}),
},
},
},
analysisUTCTimestamp: `${faker.date.recent()}`,
},
})
}
}
}