diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index 6aeec5b425..4aa6ed0393 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -127,7 +127,10 @@ jobs: run: cd ~/frappe-bench/ && bench build --apps frappe - name: Site Setup - run: cd ~/frappe-bench/ && bench --site test_site execute frappe.utils.install.complete_setup_wizard + run: | + cd ~/frappe-bench/ + bench --site test_site execute frappe.utils.install.complete_setup_wizard + bench --site test_site execute frappe.tests.ui_test_helpers.create_test_user - name: UI Tests run: cd ~/frappe-bench/ && bench --site test_site run-ui-tests frappe --with-coverage --headless --parallel --ci-build-id $GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT diff --git a/cypress.config.js b/cypress.config.js index f86354a06d..bfd0bc0025 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -3,6 +3,7 @@ const { defineConfig } = require("cypress"); module.exports = defineConfig({ projectId: "92odwv", adminPassword: "admin", + testUser: "frappe@example.com", defaultCommandTimeout: 20000, pageLoadTimeout: 15000, video: true, diff --git a/cypress/integration/login.js b/cypress/integration/login.js index 2db4b1fdcd..912f34c508 100644 --- a/cypress/integration/login.js +++ b/cypress/integration/login.js @@ -32,7 +32,7 @@ context("Login", () => { it("logs in using correct credentials", () => { cy.get("#login_email").type("Administrator"); - cy.get("#login_password").type(Cypress.config("adminPassword")); + cy.get("#login_password").type(Cypress.env("adminPassword")); cy.findByRole("button", { name: "Login" }).click(); cy.location("pathname").should("eq", "/app"); @@ -56,7 +56,7 @@ context("Login", () => { ); cy.get("#login_email").type("Administrator"); - cy.get("#login_password").type(Cypress.config("adminPassword")); + cy.get("#login_password").type(Cypress.env("adminPassword")); cy.findByRole("button", { name: "Login" }).click(); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 5371f5a29d..a51e1daf17 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -29,7 +29,7 @@ import "cypress-real-events/support"; Cypress.Commands.add("login", (email, password) => { if (!email) { - email = "Administrator"; + email = Cypress.config("testUser") || "Administrator"; } if (!password) { password = Cypress.env("adminPassword"); diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index 39a23f0468..f014cf379e 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -396,3 +396,27 @@ def create_blog_post(): ).insert(ignore_if_duplicate=True) return doc + + +def create_test_user(): + username = "frappe@example.com" + if frappe.db.exists("User", username): + return + + user = frappe.new_doc("User") + user.email = username + user.first_name = "Frappe" + user.new_password = frappe.local.conf.admin_password + user.send_welcome_email = 0 + user.flags.ignore_password_policy = True + user.insert(ignore_if_duplicate=True) + + user.reload() + + blocked_roles = {"Administrator", "Guest", "All"} + all_roles = set(frappe.get_all("Role", pluck="name")) + + for role in all_roles - blocked_roles: + user.append("roles", {"role": role}) + + user.save()