- Migrated all workflow Recoil states to component states to isolate each workflow visualizer instance. The use case of having two workflow visualizers displayed at the same time appeared recently and will grow in the near future. - We chose to use the `recordId` as the value for the `instanceId` of the component states. Currently, there are a few cases where two workflows or two workflow runs are rendered at the same time. As a consequence, relying on the `recordId` is enough for the moment. - However, there is one case where it's necessary to have a component state scoped to a workflow visualizer instance: the `workflowVisualizerStatusState`. This component is tightly coupled to the `<Reactflow />` component instance rendered in the workflow visualizer, and it must be set to its default value when the component first renders. I achieved that by using another component instance context whose instanceId is an identifier returned by the `useId()` hook in the Workflow Run Card component.
Twenty end-to-end (E2E) Testing
Prerequisite
Installing the browsers:
npx nx setup twenty-e2e-testing
Run end-to-end tests
npx nx test twenty-e2e-testing
Start the interactive UI mode
npx nx test:ui twenty-e2e-testing
Run test in specific file
npx nx test twenty-e2e-testing <filename>
Example (location of the test must be specified from the root of twenty-e2e-testing package):
npx nx test twenty-e2e-testing tests/login.spec.ts
Runs the tests in debug mode.
npx nx test:debug twenty-e2e-testing
Show report after tests
npx nx test:report twenty-e2e-testing
Q&A
Why there's path.resolve() everywhere?
That's thanks to differences in root directory when running tests using commands and using IDE. When running tests with commands,
the root directory is twenty/packages/twenty-e2e-testing, for IDE it depends on how someone sets the configuration. This way, it
ensures that no matter which IDE or OS Shell is used, the result will be the same.