From 02aabfeede9525919c1ee1af0cb0fdd0acbce80c Mon Sep 17 00:00:00 2001 From: JohnAllenTech <46611809+JohnAllenTech@users.noreply.github.com> Date: Sat, 26 Oct 2024 13:36:20 -0600 Subject: [PATCH 1/4] chore: moving out from user auth out into a util --- e2e/articles.spec.ts | 8 +++--- e2e/auth.setup.ts | 54 ----------------------------------- e2e/home.spec.ts | 7 +++-- e2e/login.spec.ts | 4 +++ e2e/my-posts.spec.ts | 7 +++-- e2e/settings.spec.ts | 7 +++-- e2e/utils/index.ts | 1 + e2e/utils/utils.ts | 27 ++++++++++++++++++ playwright.config.ts | 10 ------- playwright/.auth/browser.json | 15 ---------- 10 files changed, 48 insertions(+), 92 deletions(-) delete mode 100644 e2e/auth.setup.ts create mode 100644 e2e/utils/index.ts create mode 100644 e2e/utils/utils.ts delete mode 100644 playwright/.auth/browser.json diff --git a/e2e/articles.spec.ts b/e2e/articles.spec.ts index 539299f5..f006fae6 100644 --- a/e2e/articles.spec.ts +++ b/e2e/articles.spec.ts @@ -1,11 +1,8 @@ import { test, expect } from "playwright/test"; import { randomUUID } from "crypto"; +import { loggedInAsUserOne } from "./utils"; test.describe("Unauthenticated Articles Page", () => { - test.beforeEach(async ({ page }) => { - await page.context().clearCookies(); - }); - test("Should show popular tags", async ({ page, isMobile }) => { await page.goto("http://localhost:3000/articles"); await expect( @@ -133,6 +130,9 @@ test.describe("Unauthenticated Articles Page", () => { }); test.describe("Authenticated Articles Page", () => { + test.beforeEach(async ({ page }) => { + await loggedInAsUserOne(page); + }); test("Should show recent bookmarks", async ({ page, isMobile }) => { await page.goto("http://localhost:3000/articles"); await expect( diff --git a/e2e/auth.setup.ts b/e2e/auth.setup.ts deleted file mode 100644 index ad2347be..00000000 --- a/e2e/auth.setup.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { test as setup, expect } from "@playwright/test"; -import path from "path"; -import dotenv from "dotenv"; -import browserState from "../playwright/.auth/browser.json"; - -// defaults to 1 if expires not passed. This will always fail -const hasFiveMinutes = (expires: number = 1) => { - const currentTime = Math.floor(Date.now() / 1000); // Current time in seconds - return expires - currentTime >= 300; // Check if there's at least 5 minutes until expiry -}; - -dotenv.config(); // Load .env file contents into process.env - -setup("authenticate", async ({ page }) => { - // check if theres already an authenticated browser state with atleast 5 mins until expiry - if ( - browserState.cookies.length && - hasFiveMinutes( - (browserState.cookies as Array<{ name: string; expires: number }>).find( - (cookie: { name: string }) => cookie.name === "next-auth.session-token", - )?.expires, - ) - ) { - console.log( - "Skipping auth setup as there is a currently valid authenticated browser state", - ); - return; - } - - try { - expect(process.env.E2E_USER_SESSION_ID).toBeDefined(); - - await page.context().addCookies([ - { - name: "next-auth.session-token", - value: process.env.E2E_USER_SESSION_ID as string, - domain: "localhost", - path: "/", - sameSite: "Lax", - }, - ]); - - expect( - (await page.context().cookies()).find( - (cookie) => cookie.name === "next-auth.session-token", - ), - ).toBeTruthy(); - await page.context().storageState({ - path: path.join(__dirname, "../playwright/.auth/browser.json"), - }); - } catch (err) { - console.log("Error while authenticating E2E test user", err); - } -}); diff --git a/e2e/home.spec.ts b/e2e/home.spec.ts index acbcfcf8..ebec11a7 100644 --- a/e2e/home.spec.ts +++ b/e2e/home.spec.ts @@ -1,6 +1,10 @@ import { test, expect } from "@playwright/test"; +import { loggedInAsUserOne } from "./utils"; test.describe("Authenticated homepage", () => { + test.beforeEach(async ({ page }) => { + await loggedInAsUserOne(page); + }); test("Homepage view", async ({ page, isMobile }) => { await page.goto("http://localhost:3000/"); @@ -24,9 +28,6 @@ test.describe("Authenticated homepage", () => { }); test.describe("Unauthenticated homepage", () => { - test.beforeEach(async ({ page }) => { - await page.context().clearCookies(); - }); test("Homepage view", async ({ page }) => { await page.goto("http://localhost:3000/"); diff --git a/e2e/login.spec.ts b/e2e/login.spec.ts index 7c5626ec..ea60eac2 100644 --- a/e2e/login.spec.ts +++ b/e2e/login.spec.ts @@ -1,5 +1,6 @@ import { test, expect } from "playwright/test"; import "dotenv/config"; +import { loggedInAsUserOne } from "./utils"; test.describe("Unauthenticated Login Page", () => { test.beforeEach(async ({ page }) => { @@ -31,6 +32,9 @@ test.describe("Unauthenticated Login Page", () => { }); test.describe("Authenticated Login Page", () => { + test.beforeEach(async ({ page }) => { + await loggedInAsUserOne(page); + }); test("Sign up page contains sign up links", async ({ page, isMobile }) => { // authenticated users are kicked back to the homepage if they try to go to /get-started await page.goto("http://localhost:3000/get-started"); diff --git a/e2e/my-posts.spec.ts b/e2e/my-posts.spec.ts index ad9d5398..c1f537f9 100644 --- a/e2e/my-posts.spec.ts +++ b/e2e/my-posts.spec.ts @@ -1,14 +1,15 @@ import test from "@playwright/test"; +import { loggedInAsUserOne } from "./utils"; test.describe("Unauthenticated my-posts Page", () => { - test.beforeEach(async ({ page }) => { - await page.context().clearCookies(); - }); // // Replace with tests for unauthenticated users }); test.describe("Authenticated my-posts Page", () => { + test.beforeEach(async ({ page }) => { + await loggedInAsUserOne(page); + }); // // Replace with tests for authenticated users }); diff --git a/e2e/settings.spec.ts b/e2e/settings.spec.ts index 1aa93631..f53480c0 100644 --- a/e2e/settings.spec.ts +++ b/e2e/settings.spec.ts @@ -1,14 +1,15 @@ import test from "@playwright/test"; +import { loggedInAsUserOne } from "./utils"; test.describe("Unauthenticated setttings Page", () => { - test.beforeEach(async ({ page }) => { - await page.context().clearCookies(); - }); // // Replace with tests for unauthenticated users }); test.describe("Authenticated settings Page", () => { + test.beforeEach(async ({ page }) => { + await loggedInAsUserOne(page); + }); // // Replace with tests for authenticated users }); diff --git a/e2e/utils/index.ts b/e2e/utils/index.ts new file mode 100644 index 00000000..178cd64f --- /dev/null +++ b/e2e/utils/index.ts @@ -0,0 +1 @@ +export * from "./utils"; diff --git a/e2e/utils/utils.ts b/e2e/utils/utils.ts new file mode 100644 index 00000000..ad17c8d8 --- /dev/null +++ b/e2e/utils/utils.ts @@ -0,0 +1,27 @@ +import { expect, Page } from "@playwright/test"; + +export const loggedInAsUserOne = async (page: Page) => { + try { + expect(process.env.E2E_USER_ONE_SESSION_ID).toBeDefined(); + + await page.context().addCookies([ + { + name: "next-auth.session-token", + value: process.env.E2E_USER_ONE_SESSION_ID as string, + domain: "localhost", + path: "/", + sameSite: "Lax", + }, + ]); + + expect( + (await page.context().cookies()).find( + (cookie) => cookie.name === "next-auth.session-token", + ), + ).toBeTruthy(); + } catch (err) { + // console.log(err); + + throw Error("Error while authenticating E2E test user one"); + } +}; diff --git a/playwright.config.ts b/playwright.config.ts index a58f2979..f9259f27 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -39,10 +39,6 @@ export default defineConfig({ { name: "setup", testMatch: /auth.setup\.ts/ }, { name: "Desktop Chrome", - use: { - storageState: "playwright/.auth/browser.json", - }, - dependencies: ["setup"], }, // Example other browsers @@ -50,25 +46,19 @@ export default defineConfig({ name: "Desktop Firefox", use: { ...devices["Desktop Firefox"], - storageState: "playwright/.auth/browser.json", }, - dependencies: ["setup"], }, { name: "Mobile Chrome", use: { ...devices["Pixel 9"], - storageState: "playwright/.auth/browser.json", }, - dependencies: ["setup"], }, { name: "Mobile Safari", use: { ...devices["iPhone 16"], - storageState: "playwright/.auth/browser.json", }, - dependencies: ["setup"], }, ], diff --git a/playwright/.auth/browser.json b/playwright/.auth/browser.json deleted file mode 100644 index fc6525ac..00000000 --- a/playwright/.auth/browser.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "cookies": [ - { - "name": "next-auth.session-token", - "value": "df8a11f2-f20a-43d6-80a0-a213f1efedc1", - "domain": "localhost", - "path": "/", - "expires": -1, - "httpOnly": false, - "secure": false, - "sameSite": "Lax" - } - ], - "origins": [] -} From 984b47d3d239b0825fe48d2c9cef3cb998f5c4e6 Mon Sep 17 00:00:00 2001 From: JohnAllenTech <46611809+JohnAllenTech@users.noreply.github.com> Date: Sat, 26 Oct 2024 13:42:54 -0600 Subject: [PATCH 2/4] chore: missed some updates in the README --- .github/workflows/e2e-tests.yml | 2 +- README.md | 6 +++--- drizzle/seed.ts | 2 +- e2e/utils/utils.ts | 2 -- sample.env | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 115a8a7e..cf2ebdc2 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -46,7 +46,7 @@ jobs: NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} E2E_USER_EMAIL: e2e@codu.co E2E_USER_ID: 8e3179ce-f32b-4d0a-ba3b-234d66b836ad - E2E_USER_SESSION_ID: df8a11f2-f20a-43d6-80a0-a213f1efedc1 + E2E_USER_ONE_SESSION_ID: df8a11f2-f20a-43d6-80a0-a213f1efedc1 steps: - name: Checkout repository diff --git a/README.md b/README.md index 89a0ff03..1909e175 100644 --- a/README.md +++ b/README.md @@ -141,9 +141,9 @@ You shouldn't need to change the default value here. This is a variable used by NEXTAUTH_URL=http://localhost:3000/api/auth ``` -### E2E_USER_SESSION_ID +### E2E_USER_ONE_SESSION_ID -This is the sessionToken uuid that . +This is the sessionToken uuid that is used to identify a users current active session. This is currently hardcoded and there is no reason to change this until we require multiple E2E test users within the same test suite ### E2E_USER_ID @@ -173,7 +173,7 @@ Please ensure you have the following variables set in your `.env` file: - `E2E_USER_ID`: The id of the E2E user for testing. - `E2E_USER_EMAIL`: The email of the E2E user for testing. -- `E2E_USER_SESSION_ID`: The session id that the user will use to authenticate. +- `E2E_USER_ONE_SESSION_ID`: The session id that the user will use to authenticate. Note the sample .env [here](./sample.env) is fine to use. diff --git a/drizzle/seed.ts b/drizzle/seed.ts index 6113c6eb..c998ac8a 100644 --- a/drizzle/seed.ts +++ b/drizzle/seed.ts @@ -11,7 +11,7 @@ import postgres from "postgres"; const DATABASE_URL = process.env.DATABASE_URL || ""; // These can be removed in a follow on PR. Until this hits main we cant add E2E_USER_* stuff to the env. const E2E_SESSION_ID = - process.env.E2E_USER_SESSION_ID || "df8a11f2-f20a-43d6-80a0-a213f1efedc1"; + process.env.E2E_USER_ONE_SESSION_ID || "df8a11f2-f20a-43d6-80a0-a213f1efedc1"; const E2E_USER_ID = process.env.E2E_USER_ID || "8e3179ce-f32b-4d0a-ba3b-234d66b836ad"; const E2E_USER_EMAIL = process.env.E2E_USER_EMAIL || "e2e@codu.co"; diff --git a/e2e/utils/utils.ts b/e2e/utils/utils.ts index ad17c8d8..e5b8f596 100644 --- a/e2e/utils/utils.ts +++ b/e2e/utils/utils.ts @@ -20,8 +20,6 @@ export const loggedInAsUserOne = async (page: Page) => { ), ).toBeTruthy(); } catch (err) { - // console.log(err); - throw Error("Error while authenticating E2E test user one"); } }; diff --git a/sample.env b/sample.env index bbd1f34c..17494bd2 100644 --- a/sample.env +++ b/sample.env @@ -7,4 +7,4 @@ DATABASE_URL=postgresql://postgres:secret@127.0.0.1:5432/postgres E2E_USER_EMAIL=e2e@codu.co E2E_USER_ID=8e3179ce-f32b-4d0a-ba3b-234d66b836ad -E2E_USER_SESSION_ID=df8a11f2-f20a-43d6-80a0-a213f1efedc1 +E2E_USER_ONE_SESSION_ID=df8a11f2-f20a-43d6-80a0-a213f1efedc1 From 168f00710208b52c501f359e3ba18b90f72968f2 Mon Sep 17 00:00:00 2001 From: JohnAllenTech <46611809+JohnAllenTech@users.noreply.github.com> Date: Sat, 26 Oct 2024 14:19:39 -0600 Subject: [PATCH 3/4] chore: split out e2e user creation/seeding to support two e2e users in our tests --- .github/workflows/e2e-tests.yml | 7 +++-- README.md | 25 +++++++++++++++--- drizzle/seed.ts | 47 ++++++++++++++++++++++----------- e2e/articles.spec.ts | 2 +- e2e/teardown.ts | 18 ++++++++++--- e2e/utils/utils.ts | 26 ++++++++++++++++++ sample.env | 4 ++- 7 files changed, 102 insertions(+), 27 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index cf2ebdc2..b1922382 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -44,9 +44,12 @@ jobs: GITHUB_ID: ${{ secrets.E2E_GITHUB_ID }} GITHUB_SECRET: ${{ secrets.E2E_GITHUB_SECRET }} NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} - E2E_USER_EMAIL: e2e@codu.co - E2E_USER_ID: 8e3179ce-f32b-4d0a-ba3b-234d66b836ad + E2E_USER_ONE_EMAIL: e2e-user-one@codu.co + E2E_USER_ONE_ID: 8e3179ce-f32b-4d0a-ba3b-234d66b836ad E2E_USER_ONE_SESSION_ID: df8a11f2-f20a-43d6-80a0-a213f1efedc1 + E2E_USER_TWO_EMAIL: e2e-user-two@codu.co + E2E_USER_TWO_ID: a15a104a-0e34-4101-8800-ed25c9231345 + E2E_USER_TWO_SESSION_ID: 10134766-bc6c-4b52-83d7-46ec0a4cb95d steps: - name: Checkout repository diff --git a/README.md b/README.md index 1909e175..0ac8215b 100644 --- a/README.md +++ b/README.md @@ -144,12 +144,29 @@ NEXTAUTH_URL=http://localhost:3000/api/auth ### E2E_USER_ONE_SESSION_ID This is the sessionToken uuid that is used to identify a users current active session. -This is currently hardcoded and there is no reason to change this until we require multiple E2E test users within the same test suite +This is currently hardcoded and their is no reason to change this value. +**Note: This value must be different to E2E_USER_TWO_SESSION_ID** -### E2E_USER_ID -This is the userId if the E2E user used for testing . -This is currently hardcoded and there is no reason to change this until we require multiple E2E test users within the same test suite +### E2E_USER_TWO_SESSION_ID + +This is the sessionToken uuid that is used to identify a users current active session. +This is currently hardcoded and their is no reason to change this value. +**Note: This value must be different to E2E_USER_ONE_SESSION_ID** + + +### E2E_USER_ONE_ID + +This is the userId of one of our E2E users and is used for testing . +This is currently hardcoded and their is no reason to change this value. +**Note: This value must be different to E2E_USER_TWO_ID** + + +### E2E_USER_TWO_ID + +This is the userId of one of our E2E users and is used for testing . +This is currently hardcoded and their is no reason to change this value. +**Note: This value must be different to E2E_USER_ONE_ID** For more information, you can read the documentation [here](https://next-auth.js.org/configuration/options). **Example .env file can be found [here](./sample.env). You can rename this to .env to get started** diff --git a/drizzle/seed.ts b/drizzle/seed.ts index c998ac8a..ce795e56 100644 --- a/drizzle/seed.ts +++ b/drizzle/seed.ts @@ -10,11 +10,19 @@ import postgres from "postgres"; const DATABASE_URL = process.env.DATABASE_URL || ""; // These can be removed in a follow on PR. Until this hits main we cant add E2E_USER_* stuff to the env. -const E2E_SESSION_ID = +const E2E_USER_ONE_SESSION_ID = process.env.E2E_USER_ONE_SESSION_ID || "df8a11f2-f20a-43d6-80a0-a213f1efedc1"; -const E2E_USER_ID = - process.env.E2E_USER_ID || "8e3179ce-f32b-4d0a-ba3b-234d66b836ad"; -const E2E_USER_EMAIL = process.env.E2E_USER_EMAIL || "e2e@codu.co"; +const E2E_USER_ONE_ID = + process.env.E2E_USER_ONE_ID || "8e3179ce-f32b-4d0a-ba3b-234d66b836ad"; +const E2E_USER_ONE_EMAIL = + process.env.E2E_USER_ONE_EMAIL || "e2e-user-one@codu.co"; + +const E2E_USER_TWO_SESSION_ID = + process.env.E2E_USER_TWO_SESSION_ID || "10134766-bc6c-4b52-83d7-46ec0a4cb95d"; +const E2E_USER_TWO_ID = + process.env.E2E_USER_TWO_ID || "a15a104a-0e34-4101-8800-ed25c9231345"; +const E2E_USER_TWO_EMAIL = + process.env.E2E_USER_TWO_EMAIL || "e2e-user-two@codu.co"; if (!DATABASE_URL) { throw new Error("DATABASE_URL is not set"); @@ -116,13 +124,11 @@ ${chance.paragraph()} return users; }; - const seedE2EUser = async () => { - const name = "E2E Test User"; - + const seedE2EUser = async (email: string, id: string, name: string) => { const [existingE2EUser] = await db .selectDistinct() .from(user) - .where(eq(user.id, E2E_USER_ID)); + .where(eq(user.id, id)); if (existingE2EUser) { console.log("E2E Test user already exists. Skipping creation"); @@ -130,13 +136,13 @@ ${chance.paragraph()} } const userData = { - id: E2E_USER_ID, + id: id, username: `${name.split(" ").join("-").toLowerCase()}-${chance.integer({ min: 0, max: 999, })}`, name, - email: E2E_USER_EMAIL, + email, image: `https://robohash.org/${encodeURIComponent(name)}?bgset=bg1`, location: chance.country({ full: true }), bio: chance.sentence({ words: 10 }), @@ -146,11 +152,11 @@ ${chance.paragraph()} return createdUser; }; - const seedE2EUserSession = async (userId: string) => { + const seedE2EUserSession = async (userId: string, sessionToken: string) => { const [existingE2EUserSession] = await db .selectDistinct() .from(session) - .where(eq(session.sessionToken, E2E_SESSION_ID)); + .where(eq(session.sessionToken, sessionToken)); if (existingE2EUserSession) { console.log("E2E Test session already exists. Skipping creation"); @@ -164,7 +170,7 @@ ${chance.paragraph()} .insert(session) .values({ userId, - sessionToken: E2E_SESSION_ID, + sessionToken, // Set session to expire in 6 months. expires: new Date(currentDate.setMonth(currentDate.getMonth() + 6)), }) @@ -249,8 +255,19 @@ ${chance.paragraph()} try { await addUserData(); - const user = await seedE2EUser(); - await seedE2EUserSession(user.id); + const userOne = await seedE2EUser( + E2E_USER_ONE_EMAIL, + E2E_USER_ONE_ID, + "E2E Test User One", + ); + const userTwo = await seedE2EUser( + E2E_USER_TWO_EMAIL, + E2E_USER_TWO_ID, + "E2E Test User Two", + ); + + await seedE2EUserSession(userOne.id, E2E_USER_ONE_SESSION_ID); + await seedE2EUserSession(userTwo.id, E2E_USER_TWO_SESSION_ID); } catch (error) { console.log("Error:", error); } diff --git a/e2e/articles.spec.ts b/e2e/articles.spec.ts index f006fae6..c7fe8143 100644 --- a/e2e/articles.spec.ts +++ b/e2e/articles.spec.ts @@ -251,7 +251,7 @@ test.describe("Authenticated Articles Page", () => { page.getByRole("heading", { name: "Lorem Ipsum" }), ).toBeVisible(); await expect( - page.getByRole("heading", { name: "Written by E2E Test User" }), + page.getByRole("heading", { name: "Written by E2E Test User One" }), ).toBeVisible(); await expect( page.getByRole("heading", { name: "Discussion (0)" }), diff --git a/e2e/teardown.ts b/e2e/teardown.ts index 720b1364..d5b1a416 100644 --- a/e2e/teardown.ts +++ b/e2e/teardown.ts @@ -5,17 +5,27 @@ dotenv.config(); // Load .env file contents into process.env export const teardown = async () => { try { - if (!process.env.DATABASE_URL || !process.env.E2E_USER_ID) + if ( + !process.env.DATABASE_URL || + !process.env.E2E_USER_ONE_ID || + !process.env.E2E_USER_TWO_ID + ) throw new Error("Missing env variables for DB clean up script"); const db = postgres(process.env.DATABASE_URL as string); - // the test suit adds posts created by the E2E user. We want to remove them between test runs + // the test suit adds posts created by the E2E users. We want to remove them between test runs await db` - DELETE FROM "Post" WHERE "userId" = ${process.env.E2E_USER_ID as string} + DELETE FROM "Post" WHERE "userId" = ${process.env.E2E_USER_ONE_ID as string} + `; + await db` + DELETE FROM "Post" WHERE "userId" = ${process.env.E2E_USER_TWO_ID as string} `; // the test suit adds comments created by the E2E user. We want to remove them between test runs await db` - DELETE FROM "Comment" WHERE "userId" = ${process.env.E2E_USER_ID as string} + DELETE FROM "Comment" WHERE "userId" = ${process.env.E2E_USER_ONE_ID as string} + `; + await db` + DELETE FROM "Comment" WHERE "userId" = ${process.env.E2E_USER_TWO_ID as string} `; console.log("DB clean up successful"); diff --git a/e2e/utils/utils.ts b/e2e/utils/utils.ts index e5b8f596..1d918d92 100644 --- a/e2e/utils/utils.ts +++ b/e2e/utils/utils.ts @@ -23,3 +23,29 @@ export const loggedInAsUserOne = async (page: Page) => { throw Error("Error while authenticating E2E test user one"); } }; + +export const loggedInAsUserTwo = async (page: Page) => { + try { + expect(process.env.E2E_USER_TWO_SESSION_ID).toBeDefined(); + + await page.context().clearCookies(); + + await page.context().addCookies([ + { + name: "next-auth.session-token", + value: process.env.E2E_USER_TWO_SESSION_ID as string, + domain: "localhost", + path: "/", + sameSite: "Lax", + }, + ]); + + expect( + (await page.context().cookies()).find( + (cookie) => cookie.name === "next-auth.session-token", + ), + ).toBeTruthy(); + } catch (err) { + throw Error("Error while authenticating E2E test user two"); + } +}; diff --git a/sample.env b/sample.env index 17494bd2..c3602d3a 100644 --- a/sample.env +++ b/sample.env @@ -6,5 +6,7 @@ NEXTAUTH_URL=http://localhost:3000/api/auth DATABASE_URL=postgresql://postgres:secret@127.0.0.1:5432/postgres E2E_USER_EMAIL=e2e@codu.co -E2E_USER_ID=8e3179ce-f32b-4d0a-ba3b-234d66b836ad +E2E_USER_ONE_ID=8e3179ce-f32b-4d0a-ba3b-234d66b836ad +E2E_USER_TWO_ID=a15a104a-0e34-4101-8800-ed25c9231345 E2E_USER_ONE_SESSION_ID=df8a11f2-f20a-43d6-80a0-a213f1efedc1 +E2E_USER_TWO_SESSION_ID=10134766-bc6c-4b52-83d7-46ec0a4cb95d From c08960553d638e9502f7341657d57fe9edab81a4 Mon Sep 17 00:00:00 2001 From: John <46611809+JohnAllenTech@users.noreply.github.com> Date: Sun, 27 Oct 2024 18:46:33 -0600 Subject: [PATCH 4/4] Update README.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0ac8215b..1bbcb11b 100644 --- a/README.md +++ b/README.md @@ -157,16 +157,16 @@ This is currently hardcoded and their is no reason to change this value. ### E2E_USER_ONE_ID -This is the userId of one of our E2E users and is used for testing . -This is currently hardcoded and their is no reason to change this value. -**Note: This value must be different to E2E_USER_TWO_ID** +This is the userId of one of our E2E users and is used for testing. +This is currently hardcoded and there is no reason to change this value. +**Note: This value must be different from E2E_USER_TWO_ID** ### E2E_USER_TWO_ID -This is the userId of one of our E2E users and is used for testing . -This is currently hardcoded and their is no reason to change this value. -**Note: This value must be different to E2E_USER_ONE_ID** +This is the userId of one of our E2E users and is used for testing. +This is currently hardcoded and there is no reason to change this value. +**Note: This value must be different from E2E_USER_ONE_ID** For more information, you can read the documentation [here](https://next-auth.js.org/configuration/options). **Example .env file can be found [here](./sample.env). You can rename this to .env to get started**