scratch-www/test/integration/footer-links.test.js

184 lines
5.8 KiB
JavaScript
Raw Normal View History

// these tests do not sign in as a user
2020-10-02 16:53:52 -04:00
const SeleniumHelper = require('./selenium-helpers.js');
const {
clickText,
buildDriver,
findText,
navigate,
waitUntilDocumentReady
2020-10-02 16:53:52 -04:00
} = new SeleniumHelper();
const rootUrl = process.env.ROOT_URL || 'https://scratch.ly';
2020-10-02 16:53:52 -04:00
2021-12-03 09:14:25 -05:00
jest.setTimeout(60000);
2020-10-02 16:53:52 -04:00
let driver;
describe('www-integration footer links', () => {
beforeAll(async () => {
driver = await buildDriver('www-integration footer links');
});
beforeEach(async () => {
await navigate(rootUrl);
await findText('Create stories, games, and animations');
2020-10-02 16:53:52 -04:00
});
afterAll(() => driver.quit());
2020-10-02 16:53:52 -04:00
// ==== About Scratch column ====
test('click About Scratch link', async () => {
await clickText('About Scratch');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/about\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click For Parents link', async () => {
await clickText('For Parents');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/parents\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click For Educators link', async () => {
await clickText('For Educators');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/educators\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click For Developers link', async () => {
await clickText('For Developers');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/developers\/?$/);
2020-10-02 16:53:52 -04:00
});
// ==== COMMUNITY column ====
test('click Community Guidelines link', async () => {
await clickText('Community Guidelines');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/community_guidelines\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Discussion Forums link', async () => {
await clickText('Discussion Forums');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/discuss\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Statistics link', async () => {
await clickText('Statistics');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/statistics\/?$/);
2020-10-02 16:53:52 -04:00
});
// ==== SUPPORT column ====
test('click Ideas link', async () => {
await clickText('Ideas');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/ideas\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click FAQ link', async () => {
await clickText('FAQ');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
2021-08-05 13:55:11 -04:00
expect(pathname).toMatch(/^\/faq\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Download link', async () => {
await clickText('Download');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/download\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Contact Us link', async () => {
await clickText('Contact Us');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/contact-us\/?$/);
2020-10-02 16:53:52 -04:00
});
// ==== LEGAL column ====
test('click Terms of Use link', async () => {
await clickText('Terms of Use');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/terms_of_use\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Privacy Policy link', async () => {
await clickText('Privacy Policy');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/privacy_policy\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click Cookies link', async () => {
await clickText('Cookies');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/cookies\/?$/);
// Verify localization of last updated message
const lastUpdated = await findText('The Scratch Cookie Policy was last updated');
const lastUpdatedVisible = await lastUpdated.isDisplayed();
expect(lastUpdatedVisible).toBe(true);
});
2020-10-02 16:53:52 -04:00
test('click DMCA link', async () => {
await clickText('DMCA');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
const pathname = (new URL(url)).pathname;
expect(pathname).toMatch(/^\/DMCA\/?$/);
2020-10-02 16:53:52 -04:00
});
test('click DSA requirements link', async () => {
await clickText('DSA requirements');
await waitUntilDocumentReady();
const url = await driver.getCurrentUrl();
expect(url).toMatch(/^https:\/\/www.scratchfoundation.org\/DSA\/$/);
});
2020-10-02 16:53:52 -04:00
});
// The following links in the footer are skipped because they are not part of scratch-www
2020-10-02 16:53:52 -04:00
// Jobs
// Press
// SCRATCH STORE
// DONATE
// SCRATCH WIKI
// SCRATCH ED (SCRATCHED)
// SCRATCH JR (SCRATCHJR)
// SCRATCH DAY
// SCRATCH FOUNDATION
// Scratch Conference