Skip to content

openmrs/openmrs-esm-form-builder

Repository files navigation

OpenMRS ESM Form Builder App

OpenMRS CI

The Form Builder is a widget used to create OpenMRS form schemas. It enables users to both create new schemas and edit existing ones. It provides an embedded code editor that accepts JSON code. It also provides an interactive editor where users can construct a schema interactively without writing code.

Form Builder User Guide

Running this code

Under the hood, the Form Builder uses the React form engine to render a visual representation of your schema. This visual preview gets progressively updated as you build your schema. When done building, you can save your schema to an OpenMRS server. You can also publish your schema to make it available to your frontend.

To set up environment variables for the project, follow these steps:

  1. Create a copy of the .env.example file by running the following command:

    cp example.env .env
  2. Open the newly created .env file in the root of the project.

  3. Add the environment variables you need.

Note: These variables are currently only used for end-to-end tests.

Local development

yarn  # Installs dependencies
yarn start  # Launches a dev server

Once the dev server launches, log in and select a location. You will get redirected to the home page. Once there, you can either:

  • Click the App Switcher icon in the top right corner and then click the System Administration link to go the Admin page. Click on the Form Builder tile to launch the app.
  • Manually navigate to the /openmrs/spa/form-builder URL.

Running tests

Unit tests

To run tests for all packages, run:

yarn turbo run test

To run tests in watch mode, run:

yarn turbo run test:watch

To run a specific test file, run:

yarn turbo run test -- dashboard

The above command will only run tests in the file or files that match the provided string.

You can also run the matching tests from above in watch mode by running:

yarn turbo run test:watch -- dashboard

To generate a coverage report, run:

yarn turbo run coverage

By default, turbo will cache test runs. This means that re-running tests wihout changing any of the related files will return the cached logs from the last run. To bypass the cache, run tests with the force flag, as follows:

yarn turbo run test --force

E2E tests

To run E2E tests, make sure the dev server is running by using:

yarn start

Then, in a separate terminal, run:

yarn test-e2e --headed

Read the E2E testing guide to learn more about End-to-End tests in this project.

Troubleshooting

If you can't debug tests in UI mode because your local web server reloads due to static file changes, use the Playwright Inspector instead. Run the following command:

yarn test-e2e --headed --debug

This approach should avoid issues caused by Webpack and static file changes.

Building

yarn turbo run build