From 9cc805f42c894be37dd8ecec14a454aecc5b3aa2 Mon Sep 17 00:00:00 2001 From: BryceLTaylor <brycet@media.mit.edu> Date: Fri, 29 Apr 2022 15:32:33 -0400 Subject: [PATCH] Add tests that attempt to load shared and unshared projects --- test/integration/project-page.test.js | 92 +++++++++++++++++++++++++-- 1 file changed, 87 insertions(+), 5 deletions(-) diff --git a/test/integration/project-page.test.js b/test/integration/project-page.test.js index e2dcf428c..6c07bbd20 100644 --- a/test/integration/project-page.test.js +++ b/test/integration/project-page.test.js @@ -1,4 +1,5 @@ // These tests do not sign in with a user +// Adding tests that sign in with user #6 const SeleniumHelper = require('./selenium-helpers.js'); @@ -6,12 +7,27 @@ const { buildDriver, clickXpath, findByXpath, + signIn, waitUntilVisible } = new SeleniumHelper(); let rootUrl = process.env.ROOT_URL || 'https://scratch.ly'; -let projectId = process.env.TEST_PROJECT_ID || 1300006196; -let projectUrl = rootUrl + '/projects/' + projectId; + +// project IDs and URLs +let unownedSharedId = process.env.UNOWNED_SHARED_PROJECT_ID || 1300006196; +let unownedSharedUrl = rootUrl + '/projects/' + unownedSharedId; + +let ownedSharedId = process.env.OWNED_SHARED_PROJECT_ID || 1300009464; +let ownedSharedUrl = rootUrl + '/projects/' + ownedSharedId; + +let ownedUnsharedID = process.env.OWNED_UNSHARED_PROJECT_ID || 1300009465; +let ownedUnsharedUrl = rootUrl + '/projects/' + ownedUnsharedID; + +let unownedUnsharedID = process.env.UNOWNED_UNSHARED_PROJECT_ID || 1300006306; +let unownedUnsharedUrl = rootUrl + '/projects/' + unownedUnsharedID; + +let username = process.env.SMOKE_USERNAME + '6'; +let password = process.env.SMOKE_PASSWORD; jest.setTimeout(60000); @@ -25,7 +41,7 @@ describe('www-integration project-page signed out', () => { }); beforeEach(async () => { - await driver.get(projectUrl); + await driver.get(unownedSharedUrl); let gfOverlay = await findByXpath('//div[@class="stage-wrapper_stage-wrapper_2bejr box_box_2jjDp"]'); await waitUntilVisible(gfOverlay, driver); }); @@ -46,7 +62,7 @@ describe('www-integration project-page signed out', () => { await clickXpath('//button[@class="button action-button copy-link-button"]'); let projectLink = await findByXpath('//input[@name="link"]'); let linkValue = await projectLink.getAttribute('value'); - await expect(linkValue).toEqual(projectUrl); + await expect(linkValue).toEqual(unownedSharedUrl); }); test('Click Username to go to profile page', async ()=> { @@ -67,6 +83,72 @@ describe('www-integration project-page signed out', () => { await clickXpath('//div[@class="list-header-link"]'); let originalLink = await findByXpath('//h2/a'); let link = await originalLink.getAttribute('href'); - await expect(link).toEqual(rootUrl + '/projects/' + projectId + '/'); + await expect(link).toEqual(rootUrl + '/projects/' + unownedSharedId + '/'); + }); + + // Load an unshared project while signed out, get error + test('Load an ushared project you do not own (error)', async () => { + await driver.get(unownedUnsharedUrl); + let unavailableImage = await findByXpath('//img[@class="not-available-image"]'); + await waitUntilVisible(unavailableImage, driver); + let unavailableVisible = await unavailableImage.isDisplayed(); + await expect(unavailableVisible).toBe(true); + }); +}); + +// Logged in tests + +describe('www-integration project-page signed in', () => { + beforeAll(async () => { + // expect(projectUrl).toBe(defined); + driver = await buildDriver('www-integration project-page signed in'); + await driver.get(rootUrl); + await driver.sleep(1000); + await signIn(username, password); + await findByXpath('//span[contains(@class, "profile-name")]'); + }); + + beforeEach(async () => { + await driver.get(rootUrl); + }); + + afterAll(async () => await driver.quit()); + + // LOGGED in TESTS + + // Load a shared project you own + test('Load a shared project you own', async () => { + await driver.get(ownedSharedUrl); + let gfOverlay = await findByXpath('//div[@class="stage-wrapper_stage-wrapper_2bejr box_box_2jjDp"]'); + await waitUntilVisible(gfOverlay, driver); + let gfVisible = await gfOverlay.isDisplayed(); + await expect(gfVisible).toBe(true); + }); + + // Load a shared project you don't own + test('Load a shared project you do not own', async () => { + await driver.get(unownedSharedUrl); + let gfOverlay = await findByXpath('//div[@class="stage-wrapper_stage-wrapper_2bejr box_box_2jjDp"]'); + await waitUntilVisible(gfOverlay, driver); + let gfVisible = await gfOverlay.isDisplayed(); + await expect(gfVisible).toBe(true); + }); + + // Load an unshared project you own + test('Load a shared project you own', async () => { + await driver.get(ownedUnsharedUrl); + let gfOverlay = await findByXpath('//div[@class="stage-wrapper_stage-wrapper_2bejr box_box_2jjDp"]'); + await waitUntilVisible(gfOverlay, driver); + let gfVisible = await gfOverlay.isDisplayed(); + await expect(gfVisible).toBe(true); + }); + + // Load an unshared project you don't own, get error + test('Load an ushared project you do not own (error)', async () => { + await driver.get(unownedUnsharedUrl); + let unavailableImage = await findByXpath('//img[@class="not-available-image"]'); + await waitUntilVisible(unavailableImage, driver); + let unavailableVisible = await unavailableImage.isDisplayed(); + await expect(unavailableVisible).toBe(true); }); });