1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 05:09:43 +02:00

test: Setup UI test using BDD approach (#152)

This commit is contained in:
Amrita 2024-10-18 00:03:31 +05:45 committed by GitHub
parent 7f4bc1bb62
commit 4efc3be8d5
7 changed files with 131 additions and 1 deletions

View file

@ -0,0 +1,25 @@
const {
After,
Before,
AfterAll,
BeforeAll,
setDefaultTimeout,
} = require("@cucumber/cucumber");
const { createSession, closeSession } = require("nightwatch-api");
setDefaultTimeout(60000);
// runs before all scenarios
BeforeAll(async function () {});
// runs before each scenario
Before(async function () {
await createSession();
});
// runs after each scenario
After(async function () {
await closeSession();
});
// runs after all scenarios
AfterAll(async function () {});

View file

@ -0,0 +1,9 @@
Feature: login
As a user
I want to log in
So that I can manage project
Scenario: User logs in with valid credentials
Given user has browsed to the login page
When user logs in with email "demo@demo.demo" and password "demo" using the webUI
Then the user should be in the dashboard page

View file

@ -0,0 +1,20 @@
module.exports = {
url: function () {
return this.api.launchUrl + "/dashboard";
},
commands: {
isDashboardPage: async function () {
let result = false;
await this.waitForElementVisible("@dashboardHeader");
await this.isVisible("@dashboardHeader", (res) => {
result = res.value;
});
return result;
},
},
elements: {
dashboardHeader: {
selector: "a.Header_title__3SEjb",
},
},
};

View file

@ -0,0 +1,26 @@
module.exports = {
url: function () {
return this.api.launchUrl + "/login";
},
commands: {
logIn: function (email, password) {
return this.waitForElementVisible("@emailInput")
.setValue("@emailInput", email)
.waitForElementVisible("@passwordInput")
.setValue("@passwordInput", password)
.waitForElementVisible("@loginBtn")
.click("@loginBtn");
},
},
elements: {
emailInput: {
selector: "input[name=emailOrUsername]",
},
passwordInput: {
selector: "input[name=password]",
},
loginBtn: {
selector: "form button",
},
},
};

View file

@ -0,0 +1,26 @@
const { Given, When, Then } = require("@cucumber/cucumber");
const { client } = require("nightwatch-api");
const assert = require("assert");
const loginPage = client.page.loginPage();
const dashboardPage = client.page.dashboardPage();
Given("user has browsed to the login page", function () {
return loginPage.navigate();
});
When(
"user logs in with username/email {string} and password {string} using the webUI",
function (username, password) {
return loginPage.logIn(username, password);
}
);
Then("the user should be in the dashboard page", async function () {
const isDashboard = await dashboardPage.isDashboardPage();
assert.strictEqual(
isDashboard,
true,
"Expected to see dashboard page but not visible"
);
});