Note: This is a suggestion only; it might be changed or abandoned at any time.
At the beginning, you have just your repository:
parent-directory
+-- <my-repository>
+-- site
You will need to change it to the following structure:
parent-directory
+-- <my-repository>
+-- e2e
+-- site
+-- invenio-e2e
+-- ...
+-- pnpm-workspace.yaml
-
Create a
pnpm-workspace.yamlfile in parent directory:# pnpm-workspace.yaml packages: - <my-repository>/e2e - invenio-e2e
-
Clone the
invenio-e2erepository from GitHub:gh repo clone oarepo/invenio-e2e # Switch to a feature branch if needed -
Create the
e2edirectory inside your repository:cp -r invenio-e2e/e2e <my-repository>/e2e
-
Install dependencies:
cd <my-repository>/e2e pnpm install
-
Configure environment variables (see
src/config/env.tsfor all options):You will need a test user that can deposit records in your InvenioRDM instance.
export INVENIO_USER_EMAIL=... export INVENIO_USER_PASSWORD=...
-
Run your server in another terminal:
cd <my-repository> invenio-cli run
-
Run tests:
cd <my-repository>/e2e npx playwright test
The project also ships with a lightweight API regression suite that reuses the same authentication helpers as the UI tests.
Add this to your invenio.cfg to enable API testing:
# invenio.cfg
RECORDS_RESOURCES_FILES_ALLOWED_DOMAINS = [
"inveniordm.docs.cern.ch",
]Setup a test user and admin (and possibly other users) in your InvenioRDM instance with the credentials matching those in your environment variables (see src/config/env.ts).:
invenio users create user@demo.org --password 123456 --active --confirm
invenio roles create admin
invenio access allow administration-access role admin
invenio users create admin@demo.org --password 123456 --active --confirm
invenio roles add admin@demo.org admin
invenio access allow superuser-access user admin@demo.org-
Generate authenticated storage states for all tested users once by running (or let it be automatically generated when you run
npx playwright test):npx playwright test tests/api/auth.setup.tsThe user state is saved in
tests/playwright/.auth/user.jsonand admin state intests/playwright/.auth/admin.jsonby default. Override the destination by setting theAUTH_USER_FILE_PATHandAUTH_ADMIN_FILE_PATHenvironment variables (seesrc/config/env.tsfor details).NOTE: You need to first create the test user and admin in your InvenioRDM instance.
-
Execute the API suite:
npx playwright test tests/api/invenio-api.spec.tsRequests target various endpoints like
/api/recordsunless you provide a different base URL. See the JSDoc insrc/tests/apifor additional customization options.
This package contains linter configuration and scripts to build and test the code. Please run:
pnpm install
npm run lint
npm run lint:fix
npm run prettier
npm run prettier:fix