Run end 2 end tests on an Appsemble environment and provide Appsemble fixtures
You can install the package by running the following at the root of your project:
npm install @appsemble/e2eTo use the fixtures in your tests, you can import expect or test at the top of the file.
These fixtures can be added to any test by specifying them in the test declaration. Matchers don't need to be manually added.
import { expect, test } from '@appsemble/e2e';
test('should navigate to app', async ({ visitApp }) => {
await visitApp('Example app');
await expect(page.getByText('Example app')).toBeVisible();
});To run end to end tests, run:
npm run e2eThe tests use Playwright.
After each test a video will be saved in the packages/e2e/test-results/{name-test} directory for
further inspection.
On the first retry of a failed job, its trace will be uploaded to the same directory. This trace can
be viewed locally, or it can be uploaded to the
online trace viewer. This shows you step-by-step whawt happened
during the test as if you ran it using ui mode.
The end to end tests use the following environment variables:
BOT_ACCOUNT_EMAIL— The email address used to login.BOT_ACCOUNT_PASSWORD— The password used to login.CI_MERGE_REQUEST_IID— By default tests are run against the staging environment on https://staging.appsemble.review. If this variable is specified, tests are run against the merge request review environment instead.ACCESS_TOKEN— The access token of the account that's logged in.
Some fixtures call the Appsemble API using the Playwright request object. This expects you to have
set an access token as environment variable with the name ACCESS_TOKEN beforehand. The easiest
way to do this is by setting it in a setup step using the loginUser fixture.
auth.setup.ts
setup('authenticate', async ({ loginUser }) => {
const accessToken = await loginUser('bot', '12345');
process.env.ACCESS_TOKEN = accessToken;
});When writing end-to-end tests, have a look at the best practices to help you write solid tests.