mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-30 10:58:23 -05:00
52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
|
/* eslint-disable no-console */
|
||
|
|
||
|
// this basic server health check is meant to be run before integration tests
|
||
|
// it should be run with the same environment variables as the integration tests
|
||
|
// and operate in the same way as the integration tests
|
||
|
|
||
|
const SeleniumHelper = require('../integration/selenium-helpers.js');
|
||
|
|
||
|
const rootUrl = process.env.ROOT_URL || (() => {
|
||
|
const ROOT_URL_DEFAULT = 'https://scratch.ly';
|
||
|
console.warn(`ROOT_URL not set, defaulting to ${ROOT_URL_DEFAULT}`);
|
||
|
return ROOT_URL_DEFAULT;
|
||
|
})();
|
||
|
|
||
|
jest.setTimeout(60000);
|
||
|
|
||
|
describe('www server health check', () => {
|
||
|
/** @type {import('selenium-webdriver').ThenableWebDriver} */
|
||
|
let driver;
|
||
|
|
||
|
/** @type {SeleniumHelper} */
|
||
|
let seleniumHelper;
|
||
|
|
||
|
beforeAll(() => {
|
||
|
seleniumHelper = new SeleniumHelper();
|
||
|
driver = seleniumHelper.buildDriver('www server health check');
|
||
|
});
|
||
|
|
||
|
afterAll(() => driver.quit());
|
||
|
|
||
|
test('server is healthy', async () => {
|
||
|
const healthUrl = new URL('health/', rootUrl);
|
||
|
await driver.get(healthUrl.toString());
|
||
|
|
||
|
// Note: driver.getPageSource() will return the pretty HTML form of the JSON
|
||
|
const pageText = await driver.executeScript('return document.body.innerText');
|
||
|
|
||
|
let healthObject;
|
||
|
let serverReturnedValidJson = false;
|
||
|
|
||
|
try {
|
||
|
healthObject = JSON.parse(pageText);
|
||
|
serverReturnedValidJson = true;
|
||
|
} catch (_e) {
|
||
|
// ignore
|
||
|
}
|
||
|
|
||
|
expect(serverReturnedValidJson).toBe(true);
|
||
|
expect(healthObject).toHaveProperty('healthy', true);
|
||
|
});
|
||
|
});
|