codu-code / codu

Codú's open-source codebase. A space for coders. Visit our community!
https://codu.co/
Apache License 2.0
141 stars 145 forks source link

chore: moving out user auth out into a util for E2E tests #1181

Closed JohnAllenTech closed 1 month ago

JohnAllenTech commented 1 month ago

✨ Codu Pull Request 💻

Helps with #1168 and #468

Pull Request details

So eventually we will need multiple user personas in a single E2E test.

One example is a user replying to another users comment. This PR is a first step to support multiple users in our E2E test. Follow on PRs will create a new loggedInAsUserTwo function which will be used to reply to 'user on'

I have also switched from having our tests run as authenticated by default

Any Breaking changes

Associated Screenshots

vercel[bot] commented 1 month ago

@JohnAllenTech is attempting to deploy a commit to the Codú Team on Vercel.

A member of the Team first needs to authorize it.

coderabbitai[bot] commented 1 month ago

Walkthrough

The pull request introduces significant changes to the end-to-end test suite for the articles page, focusing on user authentication. It separates tests for authenticated and unauthenticated users, removing the cookie-clearing step for unauthenticated tests and adding a login step for authenticated tests. A new utility function, loggedInAsUserOne, is introduced to streamline authentication across various test suites. Additionally, the playwright.config.ts file is updated to simplify configurations by removing certain properties related to storage state and dependencies.

Changes

File Change Summary
e2e/articles.spec.ts Separated tests for authenticated and unauthenticated users; added beforeEach for login in authenticated tests; updated visibility checks and loading simulation.
e2e/auth.setup.ts Deleted file containing authentication setup for end-to-end tests, including session token checks.
e2e/home.spec.ts Introduced loggedInAsUserOne for authenticated tests; removed cookie-clearing step for unauthenticated tests.
e2e/login.spec.ts Added loggedInAsUserOne for authenticated tests; updated visibility assertions based on user state.
e2e/my-posts.spec.ts Removed cookie-clearing step for unauthenticated tests; added loggedInAsUserOne for authenticated tests.
e2e/settings.spec.ts Removed cookie-clearing step for unauthenticated tests; added loggedInAsUserOne for authenticated tests.
e2e/utils/index.ts Re-exported all entities from ./utils for easier access.
e2e/utils/utils.ts Introduced loggedInAsUserOne function for user authentication in end-to-end tests.
playwright.config.ts Removed storageState and dependencies properties from several project configurations.
README.md Renamed environment variable E2E_USER_SESSION_ID to E2E_USER_ONE_SESSION_ID with updated description.
drizzle/seed.ts Updated to use process.env.E2E_USER_ONE_SESSION_ID for session ID in seeding process.
sample.env Renamed E2E_USER_SESSION_ID to E2E_USER_ONE_SESSION_ID.

Possibly related PRs

Suggested reviewers

Poem

🐇 In the land of tests, we hop and play,
With cookies cleared, we find our way.
Authenticated friends, we greet with cheer,
As bookmarks appear, our path is clear.
So let’s raise a toast, to tests anew,
In the garden of code, where dreams come true! 🌼


📜 Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
📥 Commits Files that changed from the base of the PR and between d11dd2351ed95691404b991d6e7e420833450511 and b78ae71ac72ce9a5c0fb3dc9c08e48fc2a937070.
📒 Files selected for processing (1) * e2e/utils/utils.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1) * e2e/utils/utils.ts
--- Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
vercel[bot] commented 1 month ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
codu ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 26, 2024 10:31pm
JohnAllenTech commented 1 month ago

Something strange happening when deployed. Will do some troubleshooting. Everything is working locally with the same commands.

JohnAllenTech commented 1 month ago

@NiallJoeMaher it seems that the PR workflow always runs from the main branches version.

I have a new env var thats needed for the tests to pass. Not sure how to work around this..

I am pretty confident it will pass the E2E tests if you merge it though. Can we see and revert if thats not the case?

JohnAllenTech commented 1 month ago

image Heres the reason its failing.

It needs E2E_USER_ONE_SESSION_ID which i have added to the E2E test workflow file.

JohnAllenTech commented 4 weeks ago

It worked anyway! I imagine this will be the same for the other two... maybe