Files
web2.0-frontend/tests/testcafe/admin/create-signup.test.ts
T
Aarni Halinen ca9d517475 fix react-toastify 😎
2021-03-30 21:55:16 +03:00

96 lines
3.0 KiB
TypeScript

import { Selector } from "testcafe";
import {
getSiteRoot, getPageUrl, deleteForm, doLogin, generateToken, getPostRequestLogger,
} from "../utils";
const LOGGER = getPostRequestLogger("signupForm/");
fixture`Admin signup form`.page(`${getSiteRoot()}/admin/signups`)
.requestHooks(LOGGER)
.after(async (ctx) => {
const token = await generateToken();
await deleteForm(ctx.formId, token);
});
test("Logged in user can create signup", async (t) => {
const loginForm = Selector("form.admin-login-form");
await t.expect(loginForm.exists).ok();
await doLogin(t);
await t.wait(3000);
await t.expect(await getPageUrl()).contains("/admin/signups");
const newButton = Selector("[data-e2e=\"create-signup\"]");
await t.click(newButton);
await t.wait(3000);
await t.expect(await getPageUrl()).contains("/admin/signups/create");
const titleFi = Selector("#rjsf_title_fi");
const titleEn = Selector("#rjsf_title_en");
const visible = Selector("#rjsf_visible");
await t
.typeText(titleFi, "Testi Ilmo")
.typeText(titleEn, "Test Signup")
.click(visible);
const newQuestionButton = Selector("[data-e2e=\"admin-signup-new-question\"]");
const lastQuestion = () => Selector("[data-e2e=\"admin-signup-question\"]").child("div").child("div").nth(-1);
await t.click(newQuestionButton);
let question = lastQuestion();
let questionName = question.child("input");
let questionTypeSelect = question.child("select");
let requiredBox = question.child("label");
await t
.selectText(questionName)
.pressKey("delete")
.typeText(questionName, "Nimi")
.click(questionTypeSelect)
.click(questionTypeSelect.find("option").withExactText("name"))
.click(requiredBox);
await t.click(newQuestionButton);
question = lastQuestion();
questionName = question.child("input");
questionTypeSelect = question.child("select");
requiredBox = question.child("label");
await t
.selectText(questionName)
.pressKey("delete")
.typeText(questionName, "S-Posti")
.click(questionTypeSelect)
.click(questionTypeSelect.find("option").withExactText("email"))
.click(requiredBox);
await t.click(newQuestionButton);
question = lastQuestion();
questionName = question.child("input");
questionTypeSelect = question.child("select");
const radioOptions = question.child("input").nth(-1);
await t
.selectText(questionName)
.pressKey("delete")
.typeText(questionName, "Olen")
.click(questionTypeSelect)
.click(questionTypeSelect.find("option").withExactText("radiobutton"))
.typeText(radioOptions, "Nuori,Vanha,Testaaja");
const submit = Selector("button[type=\"submit\"]");
await t.click(submit);
const parsed = JSON.parse(LOGGER.requests[0].response.body as string);
// eslint-disable-next-line no-param-reassign
t.fixtureCtx.formId = parsed.id;
const statusMessage = Selector(".Toastify__toast-body");
await t
.hover(statusMessage)
.expect(
statusMessage.innerText,
).eql("Sign-up created successfully 😎");
});