-
Notifications
You must be signed in to change notification settings - Fork 10.2k
feat: atoms e2e tests #22926
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: atoms e2e tests #22926
Conversation
WalkthroughA new end-to-end (E2E) testing setup was added for the examples app: a GitHub Actions workflow (.github/workflows/atoms-e2e.yml) to run E2E tests on pull requests, Playwright configuration (packages/platform/examples/base/playwright.config.ts), Playwright devDependency and npm scripts (packages/platform/examples/base/package.json), a sample Playwright test (packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts), .gitignore updates to exclude Playwright artifacts, and documentation on testing (packages/platform/atoms/README.md). Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15 minutes Assessment against linked issues
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Graphite Automations"Add consumer team as reviewer" took an action on this PR • (08/06/25)1 reviewer was added to this PR based on Keith Williams's automation. |
The latest updates on your projects. Learn more about Vercel for Git ↗︎ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (1)
packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts (1)
12-14
: Consider extracting test data for better maintainability.The hardcoded test values make the test less maintainable and could cause conflicts if multiple tests run concurrently.
Extract test data to constants:
+const TEST_DATA = { + eventName: `e2e event ${Date.now()}`, + description: 'This is an e2e test event description' +}; + test('create event type using CreateEventTypeAtom', async ({ page }) => { await page.goto('/'); await page.goto('/event-types'); await expect(page).toHaveURL('/event-types'); await expect(page.locator('body')).toBeVisible(); - await page.fill('[data-testid="event-type-quick-chat"]', 'e2e event'); - await page.fill('textarea[placeholder="A quick video meeting."]', 'This is an e2e test event description'); + await page.fill('[data-testid="event-type-quick-chat"]', TEST_DATA.eventName); + await page.fill('textarea[placeholder="A quick video meeting."]', TEST_DATA.description);This approach reduces test flakiness and improves maintainability.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (5)
.github/workflows/atoms-e2e.yml
(1 hunks)packages/platform/examples/base/.gitignore
(1 hunks)packages/platform/examples/base/package.json
(2 hunks)packages/platform/examples/base/playwright.config.ts
(1 hunks)packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.ts
📄 CodeRabbit Inference Engine (.cursor/rules/review.mdc)
**/*.ts
: For Prisma queries, only select data you need; never useinclude
, always useselect
Ensure thecredential.key
field is never returned from tRPC endpoints or APIs
Files:
packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts
packages/platform/examples/base/playwright.config.ts
**/*.{ts,tsx}
📄 CodeRabbit Inference Engine (.cursor/rules/review.mdc)
Flag excessive Day.js use in performance-critical code; prefer native Date or Day.js
.utc()
in hot paths like loops
Files:
packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts
packages/platform/examples/base/playwright.config.ts
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: calcom/cal.com#21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.
📚 Learning: applies to **/*.{service,repository}.ts : avoid dot-suffixes like `.service.ts` or `.repository.ts` ...
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: Applies to **/*.{service,repository}.ts : Avoid dot-suffixes like `.service.ts` or `.repository.ts` for new files; reserve `.test.ts`, `.spec.ts`, `.types.ts` for their specific purposes
Applied to files:
packages/platform/examples/base/.gitignore
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
29-29: label "buildjet-4vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Atoms E2E Tests
🔇 Additional comments (7)
packages/platform/examples/base/.gitignore (1)
38-42
: LGTM! Proper exclusion of Playwright test artifacts.The additions correctly exclude Playwright test results, reports, and the development database from version control, which is essential for a clean repository.
packages/platform/examples/base/playwright.config.ts (1)
3-4
: LGTM! Well-configured timeout settings.The timeout configurations appropriately balance fast CI feedback with local debugging flexibility.
packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts (1)
19-20
: Verify CreateEventTypeAtom’s title/slug transformationsThe E2E test at packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts (lines 19–20) assumes that typing “e2e event” produces:
- Header text “E2e Event” (title-case)
- URL segment “/e2e-event” (kebab-case)
We weren’t able to locate the transformation utilities or the CreateEventTypeAtom implementation to confirm these exact conversions. Please manually verify that this atom applies those transformations under the hood—or update the test (or expose the slug/title functions) to keep it in sync and avoid brittleness.
• packages/platform/examples/base/tests/create-event-type-atom/create-event-type.e2e.ts (lines 19–20)
packages/platform/examples/base/package.json (1)
6-6
: LGTM! Good separation of dev and E2E environments.Using port 4322 for E2E tests prevents conflicts with the regular development server on port 4321.
.github/workflows/atoms-e2e.yml (3)
19-23
: LGTM! Proper environment variable configuration for E2E testing.The use of GitHub secrets for OAuth credentials and API URLs follows security best practices for E2E testing with real service integration.
7-11
: LGTM! Efficient path-based workflow triggering.The workflow correctly triggers only on changes to relevant paths, optimizing CI resource usage.
44-57
: LGTM! Comprehensive artifact management for debugging.The workflow properly uploads both test results and Playwright reports with appropriate retention, facilitating effective debugging of test failures.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
packages/platform/atoms/README.md (2)
39-40
: Convert bare URL into proper Markdown link to satisfy MD034markdownlint flagged the newly-added bare URL. Using inline link syntax is more maintainable and avoids the linter warning.
-- https://docs.gitlab.com/development/changelog/ +- [GitLab changelog guidelines](https://docs.gitlab.com/development/changelog/)
45-52
: Add language identifier to fenced block (MD040)The
.env
snippet lacks a language tag, triggering MD040. Annotate the block asenv
(orbash
) so editors get syntax highlighting and linter noise is removed.-``` +```env NEXT_PUBLIC_X_CAL_ID="" X_CAL_SECRET_KEY="" NEXT_PUBLIC_CALCOM_API_URL="https://api.cal.com/v2" VITE_BOOKER_EMBED_OAUTH_CLIENT_ID="" VITE_BOOKER_EMBED_API_URL="https://api.cal.com/v2" ORGANIZATION_ID=""</blockquote></details> </blockquote></details> <details> <summary>📜 Review details</summary> **Configuration used: CodeRabbit UI** **Review profile: CHILL** **Plan: Pro** <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between d1d7b8d4ffc218c4895973c7edf5ad28732da35c and 50b03aceec2f01aa24dedacbd0b1ba1d63edd155. </details> <details> <summary>📒 Files selected for processing (1)</summary> * `packages/platform/atoms/README.md` (1 hunks) </details> <details> <summary>🧰 Additional context used</summary> <details> <summary>🧠 Learnings (1)</summary> <details> <summary>📓 Common learnings</summary>
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: #21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.</details> </details><details> <summary>🪛 markdownlint-cli2 (0.17.2)</summary> <details> <summary>packages/platform/atoms/README.md</summary> 39-39: Bare URL used (MD034, no-bare-urls) --- 45-45: Fenced code blocks should have a language specified (MD040, fenced-code-language) </details> </details> </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)</summary> * GitHub Check: Install dependencies / Yarn install & cache * GitHub Check: Atoms E2E Tests </details> <details> <summary>🔇 Additional comments (1)</summary><blockquote> <details> <summary>packages/platform/atoms/README.md (1)</summary> `43-43`: **Verify script name `yarn dev-on`** Most workspaces use a `dev` or `dev:watch` script; `dev-on` is uncommon. Please confirm the script exists in `packages/platform/atoms/package.json`. If it’s actually `dev`, update the instruction to avoid confusion. </details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.github/workflows/atoms-e2e.yml (1)
30-30
: Runner label is still non-standard – please replace or ensure self-hosted config
The workflow continues to usebuildjet-4vcpu-ubuntu-2204
, which GitHub does not recognise as a hosted runner. Unless you have a correctly configured self-hosted runner with that exact label, jobs will queue forever. Switch to an official label such asubuntu-22.04
/ubuntu-latest-4-cores
, or document the self-hosted runner setup.
🧹 Nitpick comments (1)
.github/workflows/atoms-e2e.yml (1)
26-29
: Add a concurrency group to avoid stacking CI minutes on multiple PR pushes
When contributors force-push frequently, earlier jobs keep running unnecessarily. Define aconcurrency
key so that only the latest commit per PR executes:concurrency: group: atoms-e2e-${{ github.head_ref }} cancel-in-progress: true
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/atoms-e2e.yml
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: calcom/cal.com#21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
30-30: label "buildjet-4vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Install dependencies / Yarn install & cache
- GitHub Check: Atoms E2E Tests
- name: Upload Test Results | ||
uses: actions/upload-artifact@v4 | ||
if: always() | ||
with: | ||
name: atoms-e2e-test-results | ||
path: test-results | ||
retention-days: 7 | ||
- name: Upload Playwright Report | ||
uses: actions/upload-artifact@v4 | ||
if: always() | ||
with: | ||
name: atoms-e2e-playwright-report | ||
path: playwright-report | ||
retention-days: 7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Artifact paths likely wrong when working-directory is changed
actions/upload-artifact
always resolves the path
input from the workspace root, not from the working-directory
used in previous run
steps. Because the Playwright run happens inside packages/platform/examples/base
, the folders produced will be located at
packages/platform/examples/base/test-results
and packages/platform/examples/base/playwright-report
.
As written, the upload steps will silently succeed but create empty artifacts.
- path: test-results
+ path: packages/platform/examples/base/test-results
@@
- path: playwright-report
+ path: packages/platform/examples/base/playwright-report
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- name: Upload Test Results | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: atoms-e2e-test-results | |
path: test-results | |
retention-days: 7 | |
- name: Upload Playwright Report | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: atoms-e2e-playwright-report | |
path: playwright-report | |
retention-days: 7 | |
- name: Upload Test Results | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: atoms-e2e-test-results | |
path: packages/platform/examples/base/test-results | |
retention-days: 7 | |
- name: Upload Playwright Report | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: atoms-e2e-playwright-report | |
path: packages/platform/examples/base/playwright-report | |
retention-days: 7 |
🤖 Prompt for AI Agents
In .github/workflows/atoms-e2e.yml around lines 45 to 58, the artifact upload
paths are incorrect because actions/upload-artifact resolves paths from the
workspace root, not the working-directory of previous steps. Update the path
inputs to include the full relative paths from the root, such as
packages/platform/examples/base/test-results and
packages/platform/examples/base/playwright-report, to ensure the correct
directories are uploaded.
E2E results are ready! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (2)
.github/workflows/atoms-e2e.yml (2)
31-31
: Non-standard runner label still unresolvedThe workflow still uses the unknown label
buildjet-4vcpu-ubuntu-2204
. GitHub-hosted machines won’t recognise it, so the job will never start unless a self-hosted runner with that exact label is registered. Replace it with an official label (e.g.ubuntu-22.04
orubuntu-latest-4-cores
) or document the custom runner inactionlint.yaml
.- runs-on: buildjet-4vcpu-ubuntu-2204 + runs-on: ubuntu-latest-4-cores
50-52
: Artifact paths will be empty because they’re resolved from the repo root
actions/upload-artifact
resolvespath
from$GITHUB_WORKSPACE
, not from the precedingworking-directory
(packages/platform/examples/base
). The current values will upload empty artefacts. Prefix the correct sub-directory:- path: test-results + path: packages/platform/examples/base/test-results @@ - path: playwright-report + path: packages/platform/examples/base/playwright-reportAlso applies to: 57-58
🧹 Nitpick comments (1)
.github/workflows/atoms-e2e.yml (1)
17-26
: Secrets not available to forked PRs – expect CI failuresThe job is triggered by
pull_request
, which includes forks, but relies on numerous repository secrets (ATOMS_E2E_OAUTH_CLIENT_ID
, Docker creds, database URLs, etc.). These secrets are not exposed to untrusted forks, so the job will error out for external contributors.Consider one of:
- Use
pull_request_target
(with great care for security),- Run the workflow only on
push
to protected branches, or- Guard secret-dependent steps with
if: env.ATOMS_E2E_OAUTH_CLIENT_ID != ''
.Failing to address this will produce red CI for all community PRs.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/atoms-e2e.yml
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: calcom/cal.com#21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
31-31: label "buildjet-4vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Install dependencies / Yarn install & cache
- GitHub Check: Atoms E2E Tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (2)
.github/workflows/atoms-e2e.yml (2)
44-50
: Artifact upload will fail—test-results
path is wrong
actions/upload-artifact@v4
resolvespath
from the repository root, not theworking-directory
used in the previous run step. The Playwrightrun happens insidepackages/platform/examples/base
, so the folder ends up atpackages/platform/examples/base/test-results
.
If the path isn’t fixed, the step will throw “no files found” and fail the entire job (v4 is strict).- path: test-results + path: packages/platform/examples/base/test-results
51-56
: Same issue for Playwright report directory
The upload step points to a non-existent root-level directory; update it to the correct relative path.- path: playwright-report + path: packages/platform/examples/base/playwright-report
🧹 Nitpick comments (1)
.github/workflows/atoms-e2e.yml (1)
13-15
: Over-broad permissions—consider droppingactions: write
Unless this job intentionally creates/updates workflow runs or artifacts via the GitHub API,actions: write
isn’t required. Reducing to the minimum (oftencontents: read
,statuses: write
) follows the principle of least privilege and limits blast radius if a token leaks.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/atoms-e2e.yml
(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: calcom/cal.com#21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.
📚 Learning: cal.com uses buildjet runners extensively in their github actions workflows, including `buildjet-4vc...
Learnt from: supalarry
PR: calcom/cal.com#22926
File: .github/workflows/atoms-e2e.yml:31-31
Timestamp: 2025-08-07T08:53:45.434Z
Learning: Cal.com uses BuildJet runners extensively in their GitHub Actions workflows, including `buildjet-4vcpu-ubuntu-2204` and `buildjet-2vcpu-ubuntu-2204`. These are valid custom runners for their organization and should not be flagged as issues.
Applied to files:
.github/workflows/atoms-e2e.yml
📚 Learning: for large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, fo...
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Applied to files:
.github/workflows/atoms-e2e.yml
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
31-31: label "buildjet-8vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Atoms E2E Tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
.github/workflows/atoms-e2e.yml (1)
44-56
: Artifact paths still incorrect whenworking-directory
is setPrevious feedback noted that
actions/upload-artifact
resolvespath
from the workspace root, not from the step’sworking-directory
.
Because tests run insidepackages/platform/examples/base
, the generated folders live under that directory. As written, the uploads will be empty.- path: test-results + path: packages/platform/examples/base/test-results @@ - path: playwright-report + path: packages/platform/examples/base/playwright-report
🧹 Nitpick comments (1)
.github/workflows/atoms-e2e.yml (1)
31-41
: Pin an explicit Node version for deterministic CI runsThe job installs Node implicitly via custom Yarn/Playwright actions. Explicitly setting a Node version (e.g. with
actions/setup-node@v4
) improves reproducibility across contributors and runners, and prevents silent breakage when the default runner version changes.Example insertion before dependency steps:
- uses: actions/setup-node@v4 with: node-version: '20' cache: 'yarn'
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/atoms-e2e.yml
(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Learnt from: vijayraghav-io
PR: calcom/cal.com#21072
File: .env.example:354-357
Timestamp: 2025-07-18T08:49:18.779Z
Learning: For E2E integration tests that require real third-party service credentials (like Outlook calendar), it's acceptable to temporarily include actual test account credentials in .env.example during feature development and validation, provided there's a clear plan to replace them with placeholder values before final release. Test credentials should be for dedicated test tenants/accounts, not production systems.
📚 Learning: cal.com uses buildjet runners extensively in their github actions workflows, including `buildjet-4vc...
Learnt from: supalarry
PR: calcom/cal.com#22926
File: .github/workflows/atoms-e2e.yml:31-31
Timestamp: 2025-08-07T08:53:45.434Z
Learning: Cal.com uses BuildJet runners extensively in their GitHub Actions workflows, including `buildjet-4vcpu-ubuntu-2204` and `buildjet-2vcpu-ubuntu-2204`. These are valid custom runners for their organization and should not be flagged as issues.
Applied to files:
.github/workflows/atoms-e2e.yml
📚 Learning: for large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, fo...
Learnt from: CR
PR: calcom/cal.com#0
File: .cursor/rules/review.mdc:0-0
Timestamp: 2025-07-28T11:50:23.946Z
Learning: For large pull requests (>500 lines changed or >10 files touched), advise splitting into smaller, focused PRs by feature, layer, dependency chain, or file/module
Applied to files:
.github/workflows/atoms-e2e.yml
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
31-31: label "buildjet-4vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Install dependencies / Yarn install & cache
- GitHub Check: Atoms E2E Tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (2)
.github/workflows/atoms-e2e.yml (2)
31-31
: BuildJet runner label is OK for this org.Cal.com uses BuildJet runners across workflows; keep as-is. Consider adding your custom labels to actionlint config to silence the false-positive.
45-57
: Fix artifact upload paths (current paths will upload nothing).upload-artifact resolves paths from the workspace root, not the previous step’s working-directory. Prefix with the package path to capture the actual folders.
- name: Upload Test Results uses: actions/upload-artifact@v4 if: always() with: name: atoms-e2e-test-results - path: test-results + path: packages/platform/examples/base/test-results retention-days: 7 - name: Upload Playwright Report uses: actions/upload-artifact@v4 if: always() with: name: atoms-e2e-playwright-report - path: playwright-report + path: packages/platform/examples/base/playwright-report retention-days: 7
🧹 Nitpick comments (2)
.github/workflows/atoms-e2e.yml (2)
13-16
: Tighten permissions (actions: write likely unnecessary).Upload-artifact and checkout don’t require actions: write. Prefer least privilege.
permissions: - actions: write contents: read
29-30
: Optional: increase timeout or add concurrency to avoid burning runners.If E2E occasionally runs long, bump to 25–30 min. Also consider concurrency to cancel superseded runs.
Example:
atoms-e2e: - timeout-minutes: 15 + timeout-minutes: 25 + concurrency: + group: atoms-e2e-${{ github.ref }} + cancel-in-progress: true
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (1)
.github/workflows/atoms-e2e.yml
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-07T08:53:45.434Z
Learnt from: supalarry
PR: calcom/cal.com#22926
File: .github/workflows/atoms-e2e.yml:31-31
Timestamp: 2025-08-07T08:53:45.434Z
Learning: Cal.com uses BuildJet runners extensively in their GitHub Actions workflows, including `buildjet-4vcpu-ubuntu-2204` and `buildjet-2vcpu-ubuntu-2204`. These are valid custom runners for their organization and should not be flagged as issues.
Applied to files:
.github/workflows/atoms-e2e.yml
🪛 actionlint (1.7.7)
.github/workflows/atoms-e2e.yml
31-31: label "buildjet-4vcpu-ubuntu-2204" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Install dependencies / Yarn install & cache
- GitHub Check: Atoms E2E Tests
env: | ||
NODE_OPTIONS: --max-old-space-size=8096 | ||
ATOMS_E2E_OAUTH_CLIENT_ID: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID }} | ||
ATOMS_E2E_OAUTH_CLIENT_SECRET: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_SECRET }} | ||
ATOMS_E2E_API_URL: ${{ secrets.ATOMS_E2E_API_URL }} | ||
ATOMS_E2E_ORG_ID: ${{ secrets.ATOMS_E2E_ORG_ID }} | ||
ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED }} | ||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }} | ||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Scope secrets to the test step and correct NODE_OPTIONS (least-privilege, reduced exposure).
Define env only where needed (the test step) instead of job-wide. Also, 8096 looks like a typo; 8192 is the typical power-of-two setting.
Remove job-level env:
env:
- NODE_OPTIONS: --max-old-space-size=8096
- ATOMS_E2E_OAUTH_CLIENT_ID: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID }}
- ATOMS_E2E_OAUTH_CLIENT_SECRET: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_SECRET }}
- ATOMS_E2E_API_URL: ${{ secrets.ATOMS_E2E_API_URL }}
- ATOMS_E2E_ORG_ID: ${{ secrets.ATOMS_E2E_ORG_ID }}
- ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED }}
- DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
- DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
Add env to the test step:
- name: Run Atoms E2E Tests
working-directory: packages/platform/examples/base
+ env:
+ NODE_OPTIONS: --max-old-space-size=8192
+ ATOMS_E2E_OAUTH_CLIENT_ID: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID }}
+ ATOMS_E2E_OAUTH_CLIENT_SECRET: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_SECRET }}
+ ATOMS_E2E_API_URL: ${{ secrets.ATOMS_E2E_API_URL }}
+ ATOMS_E2E_ORG_ID: ${{ secrets.ATOMS_E2E_ORG_ID }}
+ ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED: ${{ secrets.ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED }}
+ DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
+ DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
run: yarn test:e2e
Also applies to: 41-43
🤖 Prompt for AI Agents
.github/workflows/atoms-e2e.yml around lines 17-26 (and also apply the same
change to lines 41-43): the workflow currently sets sensitive env and
NODE_OPTIONS at the job level; move those env entries into the specific test
step to minimize exposure, remove the job-level env block, and correct
NODE_OPTIONS from --max-old-space-size=8096 to --max-old-space-size=8192; ensure
the test step declares ATOMS_E2E_OAUTH_CLIENT_ID, ATOMS_E2E_OAUTH_CLIENT_SECRET,
ATOMS_E2E_API_URL, ATOMS_E2E_ORG_ID, ATOMS_E2E_OAUTH_CLIENT_ID_BOOKER_EMBED,
DATABASE_DIRECT_URL, and DATABASE_URL from secrets and the corrected
NODE_OPTIONS so only the test step has access to the secrets and the memory
setting is fixed.
- uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Is Docker login needed here?
No docker build/push/pull is shown in this job. If unused, drop this step to reduce secret exposure and speed up the workflow.
🏁 Script executed:
#!/bin/bash
# Check if the examples/base E2E setup references docker usage
rg -n "docker|compose|container" packages/platform/examples/base || true
# Check repo for docker usage tied to Playwright or atoms E2E
rg -n "docker (build|pull|run|compose)" \
packages/platform/examples/base \
packages/platform/atoms \
.github/workflows || true
Length of output: 10332
🏁 Script executed:
#!/bin/bash
rg -n "docker" .github/workflows/atoms-e2e.yml || true
Length of output: 86
Remove unused Docker login step
The atoms-e2e
job doesn’t perform any Docker build/push/pull actions, so the login is redundant. Removing it will both speed up the workflow and reduce secret exposure.
• File: .github/workflows/atoms-e2e.yml
• Lines to remove:
- - uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} |
🤖 Prompt for AI Agents
.github/workflows/atoms-e2e.yml lines 33 to 36: remove the Docker login step
since the atoms-e2e job does not perform any Docker build/push/pull; delete the
block that uses docker/login-action@v3 and its with: username/password inputs
(lines 33–36) so the workflow runs faster and avoids exposing unused secrets.
CAL-6198