reorganize old client tests
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"globals": {
|
||||
"browser": true,
|
||||
"by": true,
|
||||
"element": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import fs from 'fs';
|
||||
import { resetHabiticaDB } from '../../helpers/api-integration/mongo';
|
||||
|
||||
before(async () => {
|
||||
await resetHabiticaDB();
|
||||
});
|
||||
|
||||
// based on https://github.com/angular/protractor/issues/114#issuecomment-29046939
|
||||
afterEach(async function () {
|
||||
let lastTest = this.currentTest;
|
||||
|
||||
if (lastTest.state === 'failed') {
|
||||
let filename = `exception_${lastTest.title}.png`;
|
||||
let png = await browser.takeScreenshot();
|
||||
let buffer = new Buffer(png, 'base64');
|
||||
let stream = fs.createWriteStream(filename);
|
||||
|
||||
stream.write(buffer);
|
||||
stream.end();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
let chai = require('chai');
|
||||
let chaiAsPromised = require('chai-as-promised');
|
||||
|
||||
require('babel-register');
|
||||
require('babel-polyfill');
|
||||
|
||||
exports.config = {
|
||||
specs: ['./helper.js', './**/*.test.js'],
|
||||
baseUrl: 'http://localhost:3003/',
|
||||
capabilities: {
|
||||
browserName: 'firefox',
|
||||
},
|
||||
directConnect: true,
|
||||
seleniumAddress: 'http://localhost:4444/wd/hub',
|
||||
framework: 'mocha',
|
||||
mochaOpts: {
|
||||
reporter: 'spec',
|
||||
slow: 6000,
|
||||
timeout: 10000,
|
||||
compilers: 'js:babel-register',
|
||||
},
|
||||
onPrepare: () => {
|
||||
browser.ignoreSynchronization = true;
|
||||
|
||||
chai.use(chaiAsPromised);
|
||||
global.expect = chai.expect;
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,64 @@
|
||||
import { v4 as generateUniqueId } from 'uuid';
|
||||
|
||||
describe('Static Front Page', () => {
|
||||
beforeEach(() => {
|
||||
browser.get('/');
|
||||
browser.sleep(1000);
|
||||
});
|
||||
|
||||
it('shows the front page', async () => {
|
||||
let button = element(by.id('play-btn'));
|
||||
|
||||
await expect(button.getText()).to.eventually.eql('Join for free');
|
||||
});
|
||||
|
||||
it('does not login when using wrong credentials', async () => {
|
||||
let button = element(by.id('play-btn'));
|
||||
let randomName = generateUniqueId();
|
||||
|
||||
button.click();
|
||||
browser.sleep(1000);
|
||||
|
||||
element(by.model('loginUsername')).sendKeys(randomName);
|
||||
element(by.model('loginPassword')).sendKeys('pass');
|
||||
|
||||
let login = element(by.css('#loginForm input[value="Login"]'));
|
||||
|
||||
login.click();
|
||||
browser.sleep(1000);
|
||||
|
||||
let alertDialog = browser.switchTo().alert();
|
||||
|
||||
await expect(alertDialog.getText()).to.eventually.match(/username or password is incorrect./);
|
||||
|
||||
alertDialog.accept();
|
||||
});
|
||||
|
||||
it('registers a new user', async function () {
|
||||
this.timeout(30000); // TODO: Speed up registration action. Takes way too long and times out unless you extend the timeout
|
||||
|
||||
let button = element(by.id('play-btn'));
|
||||
let randomName = generateUniqueId();
|
||||
|
||||
button.click();
|
||||
browser.sleep(1000);
|
||||
|
||||
let registerTab = element(by.linkText('Register'));
|
||||
registerTab.click();
|
||||
element(by.model('registerVals.username')).sendKeys(randomName);
|
||||
element(by.model('registerVals.email')).sendKeys(`${randomName}@example.com`);
|
||||
element(by.model('registerVals.password')).sendKeys('pass');
|
||||
element(by.model('registerVals.confirmPassword')).sendKeys('pass');
|
||||
|
||||
let register = element(by.css('#registrationForm input[type="submit"]'));
|
||||
|
||||
register.click();
|
||||
browser.sleep(3000);
|
||||
|
||||
let url = await browser.getCurrentUrl();
|
||||
|
||||
expect(url).to.not.match(/static\/front/);
|
||||
});
|
||||
|
||||
it('logs in an existing user');
|
||||
});
|
||||
Reference in New Issue
Block a user