Files
upstream-ory-kratos/test/e2e/playwright/actions/login.ts
upstream-mirror c60cc7ca75
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:19:12 +05:00

62 lines
1.7 KiB
TypeScript

// Copyright © 2024 Ory Corp
// SPDX-License-Identifier: Apache-2.0
import { APIRequestContext } from "@playwright/test"
import { findCsrfToken } from "../lib/helper"
import { LoginFlow, LogoutFlow, Session } from "@ory/kratos-client"
import { expectJSONResponse } from "../lib/request"
import { expect } from "../fixtures"
export async function loginWithPassword(
user: { password: string; traits: { email: string } },
r: APIRequestContext,
baseUrl: string,
): Promise<void> {
const { ui } = await expectJSONResponse<LoginFlow>(
await r.get(baseUrl + "/self-service/login/browser", {
headers: {
Accept: "application/json",
},
}),
{
message: "Initializing login flow failed",
},
)
const res = await r.post(ui.action, {
headers: {
Accept: "application/json",
},
data: {
identifier: user.traits.email,
password: user.password,
method: "password",
csrf_token: findCsrfToken(ui),
},
})
const { session } = await expectJSONResponse<{ session: Session }>(res)
expect(session?.identity?.traits.email).toEqual(user.traits.email)
expect(
res.headersArray().find(
({ name, value }) =>
name.toLowerCase() === "set-cookie" &&
(value.indexOf("ory_session_") > -1 || // Ory Network
value.indexOf("ory_kratos_session") > -1), // Locally hosted
),
).toBeDefined()
}
export async function logoutUrl(r: APIRequestContext, baseUrl: string) {
const { logout_url } = await expectJSONResponse<LogoutFlow>(
await r.get(baseUrl + "/self-service/logout/browser", {
headers: {
Accept: "application/json",
},
}),
{
message: "Logout failed",
},
)
return logout_url
}