Skip to content
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

Add integration tests to the CICD pipeline #1854

Merged
merged 16 commits into from
Oct 13, 2023
Merged

Add integration tests to the CICD pipeline #1854

merged 16 commits into from
Oct 13, 2023

Conversation

nikosdouvlis
Copy link
Member

@nikosdouvlis nikosdouvlis commented Oct 10, 2023

Description

See integration/README.md
Note: Not to be merged yet as we need to add the required env variables to the clerkinc/javascript repo.

Checklist

  • npm test runs as expected.
  • npm run build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Packages affected

  • @clerk/clerk-js
  • @clerk/clerk-react
  • @clerk/nextjs
  • @clerk/remix
  • @clerk/types
  • @clerk/themes
  • @clerk/localizations
  • @clerk/clerk-expo
  • @clerk/backend
  • @clerk/clerk-sdk-node
  • @clerk/shared
  • @clerk/fastify
  • @clerk/chrome-extension
  • gatsby-plugin-clerk
  • build/tooling/chore

@changeset-bot
Copy link

changeset-bot bot commented Oct 10, 2023

⚠️ No Changeset found

Latest commit: cacef87

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Comment on lines 4 to 5
pull_request:
branches: [ main, master ]
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: some of these are intentionally left as-is for testing purposes and will be removed before merging.

*/
export const createLongRunningApps = () => {
const configs = [
{ id: 'react.vite.withEmailCodes', config: react.vite, env: envs.withEmailCodes },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ Is this id just a string, or is it matching something?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a string identifier you can use to boot a group of apps or a specific app, eg:

E2E_APP_ID=react.vite.* npm run test:integration:base -- --grep @generic

Comment on lines 4 to +12
export const constants = {
TMP_DIR: path.join(process.cwd(), '.temp_integration'),
APPS_STATE_FILE: path.join(process.cwd(), '.temp_integration', 'state.json'),
E2E_APP_URL: process.env.E2E_APP_URL,
E2E_APP_ID: process.env.E2E_APP_ID,
CLEANUP: !(process.env.CLEANUP === '0' || process.env.CLEANUP === 'false'),
DEBUG: process.env.DEBUG === 'true' || process.env.DEBUG === '1',
E2E_APP_PK: process.env.E2E_APP_PK,
E2E_APP_SK: process.env.E2E_APP_SK,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ Can we add an explanation for each of these constants?

Copy link
Member

@anagstef anagstef left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing job @nikosdouvlis!

@nikosdouvlis nikosdouvlis marked this pull request as ready for review October 12, 2023 16:20
@nikosdouvlis nikosdouvlis requested review from dimkl and a team as code owners October 12, 2023 16:20
This helpers allows the user to pick which applications they want to use to run the current test against. If no params are provided, the helper will iterate and run the test against all currently running applications.

Example:
- Start the e2e suite and use two React applications with different environments by running `APP_ID=react.vite.withEmailCodes,react.vite.withEmailLinks npm run test:integration -- sign-in-smoke`
- Then pick the correct app by using `testAgainstRunningApps({ withEnv: [appConfigs.envs.withEmailCodes] })('sign in smoke test @Generic', ({ app }) => { ...`

chore(repo): Bump dependencies

chore(repo): Introduce appConfigs.longRunningApps.getById

chore(repo): Rename `instances` to `envs`

chore(repo): Rename `allEnabled` env to `withEmailCodes`

chore(repo): Rename /adapters to /models

chore(repo): Remove unused bundlewatch action

We are using the bundlewatch github integration as outlined here: https://bundlewatch.io/#/getting-started/using-bundlewatch?id=setup-ci-auth-variables-needed-by-bundlewatch

chore(repo): Rename integration/utils to integration/scripts

To avoid confusing with the testUtils helpers

chore(repo): Include /integration to eslint config

chore(repo): Split index.ts into multiple files
publint lints npm packages to ensure widest compatibility across environments, such as Vite, Webpack, Rollup, Node.js, et. All supported lint rules can be found here: https://publint.dev/rules
The arethetypeswrong/cli analyzes npm package contents for issues with their TypeScript types, particularly ESM-related module resolution issues.

For more details, visit https://github.com/arethetypeswrong/arethetypeswrong.github.io
Example:
Running `APP_ID=react.vite.* npm run test:integration` will start all apps with a matching id

chore(repo): Cleanup older tests
chore(repo): Build and upload all packages as artifacts

chore(repo): Introduce integration workflow with cached dependencies
chore(repo): Improve concurrency checks to stop running workflows

chore(repo): Use secrets: inherit to avoid duplication

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsecretsinherit

chore(repo): Fix depends-on

chore(repo): Prefix integration-related env variables with E2E_

chore(repo): Extract reusable workflows into build-base and registry-base

chore(repo): Add placeholder remix and nextjs integration scripts

chore(repo): Add placeholder verdaccio step

chore(repo): Re-introduce react.vite lockfile

fix(repo): Correctly propagate repo secrets to reusable workflow

chore(repo): Remove explicit Clerk dependencies from vite template

chore(repo): Extract e2e-base as a reusable workflow

chore(repo): Configure action runners using repo env

chore(repo): Move unit tests into checks.yml
If we're spawning a detached process, we must completely ingore the cp's stdio, otherwise the cp will exit when the parent process exits. If we want to log the output of a detached process, we must do it manually by streaming the output to the file and reading the file from the parent process.
…tically control dependency versions instead of hard coding them
chore(repo): Run e2e suites but do not fail on error temporarily
chore(repo): Add --sig to yalc:all script

chore(repo): Rename all-enabled to with-email-codes to be aligned with the codebase
chore(repo): Only runs workflows in clerkinc/javascript

chore(repo): Combine build and Verdaccio publishing
@nikosdouvlis nikosdouvlis merged commit bfa8c7b into clerk:main Oct 13, 2023
8 checks passed
@clerk-cookie
Copy link
Collaborator

This PR has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@clerk clerk locked as resolved and limited conversation to collaborators Oct 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants