scratch-www/test/integration/my-stuff.test.js

56 lines
1.7 KiB
JavaScript

const SeleniumHelper = require('./selenium-helpers.js');
const {
clickText,
findByXpath,
clickXpath,
clickButton,
buildDriver
} = new SeleniumHelper();
let username = process.env.SMOKE_USERNAME;
let password = process.env.SMOKE_PASSWORD;
let remote = process.env.SMOKE_REMOTE || false;
let rootUrl = process.env.ROOT_URL || 'https://scratch.ly';
let url = rootUrl + '/users/' + username;
if (remote){
jest.setTimeout(60000);
}
let driver;
describe('www-integration my-stuff', () => {
beforeAll(() => {
driver = buildDriver('www-integration my-stuff');
});
beforeEach(() => {
return driver.get(url)
.then(() => clickText('Sign in'))
.then(() => findByXpath('//input[@id="login_dropdown_username"]'))
.then((element) => element.sendKeys(username))
.then(() => findByXpath('//input[@name="password"]'))
.then((element) => element.sendKeys(password))
.then(() => clickButton('Sign in'));
});
afterEach(() => {
return clickXpath('//span[@class="user-name dropdown-toggle"]')
.then(() => clickXpath('//li[@id="logout"] '))
.then(() => findByXpath('//div[@class="title-banner intro-banner"]'));
});
// afterAll must be async in order to actually call driver.quit
afterAll(async () => {
await driver.quit();
});
test('Sign into Scratch using scratchr2 navbar', () => {
findByXpath('//li[contains(@class, "logged-in-user")' +
'and contains(@class, "dropdown")]/span')
.then((element) => element.getText('span'))
.then((text) => expect(text.toLowerCase()).toEqual(username.toLowerCase()));
});
});