mirror of
https://github.com/plankanban/planka.git
synced 2025-08-05 05:25:29 +02:00
test: Add BDD UI tests using Playwright (#911)
This commit is contained in:
parent
4efc3be8d5
commit
096feb35bb
17 changed files with 1260 additions and 120 deletions
16
client/tests/acceptance/pageObjects/DashboardPage.js
Normal file
16
client/tests/acceptance/pageObjects/DashboardPage.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
class DashboardPage {
|
||||
constructor() {
|
||||
this.createProjectIconSelector = `.Projects_addTitle__tXhB4`;
|
||||
this.projectTitleInputSelector = `input[name="name"]`;
|
||||
this.createProjectButtonSelector = `//button[text()="Create project"]`;
|
||||
this.projectTitleSelector = `//div[@class="item Header_item__OOEY7 Header_title__l+wMf"][text()="%s"]`;
|
||||
}
|
||||
|
||||
async createProject(project) {
|
||||
await page.click(this.createProjectIconSelector);
|
||||
await page.fill(this.projectTitleInputSelector, project);
|
||||
await page.click(this.createProjectButtonSelector);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DashboardPage;
|
38
client/tests/acceptance/pageObjects/LoginPage.js
Normal file
38
client/tests/acceptance/pageObjects/LoginPage.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
const config = require(`../config`);
|
||||
|
||||
class LoginPage {
|
||||
constructor() {
|
||||
// url
|
||||
this.homeUrl = config.baseUrl;
|
||||
this.loginUrl = `${this.homeUrl}login`;
|
||||
|
||||
// selectors
|
||||
this.loginButtonSelector = `//i[@class="right arrow icon"]`;
|
||||
this.usernameSelector = `//input[@name='emailOrUsername']`;
|
||||
this.passwordSelector = `//input[@name='password']`;
|
||||
this.errorMessageSelector = `//div[@class='ui error visible message']`;
|
||||
this.userActionSelector = `//span[@class="User_initials__9Wp90"]`;
|
||||
this.logOutSelector = `//a[@class="item UserStep_menuItem__5pvtT"][contains(text(),'Log Out')]`;
|
||||
}
|
||||
|
||||
async goToLoginUrl() {
|
||||
await page.goto(this.loginUrl);
|
||||
}
|
||||
|
||||
async logOut() {
|
||||
await page.click(this.userActionSelector);
|
||||
await page.click(this.logOutSelector);
|
||||
}
|
||||
|
||||
async login(username, password) {
|
||||
await page.fill(this.usernameSelector, username);
|
||||
await page.fill(this.passwordSelector, password);
|
||||
await page.click(this.loginButtonSelector);
|
||||
}
|
||||
|
||||
async getErrorMessage() {
|
||||
return page.innerText(this.errorMessageSelector);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = LoginPage;
|
|
@ -1,20 +0,0 @@
|
|||
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",
|
||||
},
|
||||
},
|
||||
};
|
|
@ -1,26 +0,0 @@
|
|||
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",
|
||||
},
|
||||
},
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue