72 lines
3.0 KiB
TypeScript
72 lines
3.0 KiB
TypeScript
import { expect } from "@playwright/test";
|
|
|
|
import { isSAMLLoginEnabled } from "@calcom/features/ee/sso/lib/saml";
|
|
import { IS_PREMIUM_USERNAME_ENABLED } from "@calcom/lib/constants";
|
|
|
|
import { login } from "./fixtures/users";
|
|
import { test } from "./lib/fixtures";
|
|
|
|
test.describe.configure({ mode: "parallel" });
|
|
|
|
test.describe("SAML tests", () => {
|
|
// eslint-disable-next-line playwright/no-skipped-test
|
|
test.skip(!isSAMLLoginEnabled, "Skipping due to SAML login being disabled");
|
|
|
|
test("test SAML configuration UI with pro@example.com", async ({ page }) => {
|
|
// TODO: Figure out a way to use the users from fixtures here, right now we cannot set
|
|
// the SAML_ADMINS env variables dynamically
|
|
await login({ username: "pro", email: "pro@example.com", password: "pro" }, page);
|
|
const shellLocator = page.locator(`[data-testid=dashboard-shell]`);
|
|
await page.waitForURL("/event-types");
|
|
await expect(shellLocator).toBeVisible();
|
|
// eslint-disable-next-line playwright/no-skipped-test
|
|
// Try to go Security page
|
|
await page.goto("/settings/security/sso");
|
|
// It should redirect you to the event-types page
|
|
// await page.waitForSelector("[data-testid=saml_config]");
|
|
});
|
|
|
|
test.describe("SAML Signup Flow Test", async () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/signup");
|
|
await expect(page.locator("text=Create your account")).toBeVisible(); // this prevents flaky test
|
|
await page.getByTestId("continue-with-saml-button").click();
|
|
await page.waitForSelector('[data-testid="saml-submit-button"]');
|
|
});
|
|
|
|
test("Submit button should be disabled without username", async ({ page }) => {
|
|
await page.locator('input[name="email"]').fill("tester123@example.com");
|
|
const submitButton = page.getByTestId("saml-submit-button");
|
|
await expect(submitButton).toBeVisible();
|
|
await expect(submitButton).toBeDisabled();
|
|
});
|
|
|
|
test("Submit button should be disabled without email", async ({ page }) => {
|
|
await page.locator('input[name="username"]').fill("tester123");
|
|
const submitButton = page.getByTestId("saml-submit-button");
|
|
await expect(submitButton).toBeVisible();
|
|
await expect(submitButton).toBeDisabled();
|
|
});
|
|
|
|
test("Password input should not exist", async ({ page }) => {
|
|
await expect(page.locator('input[name="password"]')).toBeHidden();
|
|
});
|
|
|
|
test("Checkbox for cookie consent does not need to be checked", async ({ page }) => {
|
|
// Fill form
|
|
await page.locator('input[name="username"]').fill("tester123");
|
|
await page.locator('input[name="email"]').fill("tester123@example.com");
|
|
|
|
const submitButton = page.getByTestId("saml-submit-button");
|
|
const checkbox = page.getByTestId("signup-cookie-content-checkbox");
|
|
|
|
await checkbox.check();
|
|
await expect(submitButton).toBeEnabled();
|
|
|
|
// the cookie consent checkbox does not need to be checked for user to proceed
|
|
await checkbox.uncheck();
|
|
await expect(submitButton).toBeEnabled();
|
|
});
|
|
});
|
|
});
|