This is the code that runs https://bandolier.learnjsthehardway.com/ for you to review. It uses the https://git.learnjsthehardway.com/learn-javascript-the-hard-way/bandolier-template to create the documentation for the project.
https://bandolier.learnjsthehardway.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
import test from 'ava';
|
|
import {sleep, expect, tid, playstart, playstop, form, wait} from '../../lib/testing.js';
|
|
import faker from 'faker';
|
|
import {knex} from '../../lib/ormish.js';
|
|
import { User } from "../../lib/models.js";
|
|
import { base_host } from "../../lib/config.js";
|
|
|
|
test.before(async t => t.context = await playstart(`${base_host}/client/#/register/`));
|
|
|
|
test.after(async t => {
|
|
knex.destroy();
|
|
await playstop(t.context.browser, t.context.p);
|
|
});
|
|
|
|
test('register form error', async (t) => {
|
|
const {context, p} = t.context;
|
|
t.not(context, undefined);
|
|
|
|
let res;
|
|
|
|
try {
|
|
// confirm we get errors
|
|
await p.click(tid("register-button"));
|
|
let email_error = await p.textContent(tid("email-error-0"));
|
|
t.true(email_error.includes("email field is required"));
|
|
|
|
// BUG: this will jam up if there's an error
|
|
const user = {
|
|
email: faker.internet.email(),
|
|
full_name: faker.name.findName(),
|
|
initials: 'XX',
|
|
password: faker.internet.password(),
|
|
}
|
|
|
|
await form(p, {
|
|
"#email": user.email,
|
|
"#full_name": user.full_name,
|
|
"#initials": "XXX",
|
|
"#password": user.password,
|
|
"#password_repeat": user.password,
|
|
"#tos_agree": true,
|
|
}, tid("register-button"));
|
|
|
|
t.is(await p.$(tid("email-error")), null);
|
|
|
|
await sleep(1000); // need this slight delay to keep playwright happy
|
|
|
|
res = await knex('user').where({email: user.email.toLowerCase()}).select();
|
|
|
|
t.not(res, undefined);
|
|
t.not(res.length, 0);
|
|
|
|
const fake_cancel = await p.$(tid("fake-payment-cancel"));
|
|
|
|
if(fake_cancel) {
|
|
// if the server is in fake mode, continue with the test
|
|
await fake_cancel.click();
|
|
await expect(t, p, tid("payment-error"));
|
|
await p.click(tid("try-again"));
|
|
|
|
// cause a fake error
|
|
await wait(p, tid("fake-payment-error"));
|
|
const fake_error = await p.$(tid("fake-payment-error"));
|
|
t.not(fake_error, null);
|
|
await fake_error.click();
|
|
await p.click(tid("try-again"));
|
|
|
|
// click finish payment
|
|
await wait(p, tid("fake-payment-button"));
|
|
const fake_pay = await p.$(tid("fake-payment-button"));
|
|
t.not(fake_pay, null);
|
|
await fake_pay.click();
|
|
|
|
// confirm payment went through
|
|
await wait(p, tid("get-started"));
|
|
// confirm it's in the dialogue
|
|
await p.click(tid("get-started"));
|
|
await expect(t, p, tid("home-page"));
|
|
} else {
|
|
console.error("Fake Payment mode not enabled, can't test.");
|
|
}
|
|
|
|
} catch (error) {
|
|
console.log(error);
|
|
t.fail(error.message);
|
|
} finally {
|
|
if(res) await User.delete({id: res[0].id});
|
|
}
|
|
});
|
|
|