2023-05-15 11:16:38 +02:00
|
|
|
const { rest } = window.MockServiceWorker;
|
2022-08-08 14:14:51 +02:00
|
|
|
|
2024-02-23 13:50:28 +01:00
|
|
|
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
|
2024-02-09 22:19:41 +01:00
|
|
|
import {
|
2024-02-23 13:50:28 +01:00
|
|
|
type ProblemDetails,
|
2024-02-09 22:19:41 +01:00
|
|
|
RuntimeLevelModel,
|
2024-02-23 13:50:28 +01:00
|
|
|
type ServerStatusResponseModel,
|
2024-02-09 22:19:41 +01:00
|
|
|
} from '@umbraco-cms/backoffice/external/backend-api';
|
2023-05-25 15:11:37 +02:00
|
|
|
import { expect, test } from './test.js';
|
2022-08-25 14:08:36 +02:00
|
|
|
|
2022-08-15 16:12:00 +02:00
|
|
|
test.describe('installer tests', () => {
|
|
|
|
|
test.beforeEach(async ({ page, worker }) => {
|
|
|
|
|
await worker.use(
|
|
|
|
|
// Override the server status to be "must-install"
|
|
|
|
|
rest.get(umbracoPath('/server/status'), (_req, res, ctx) => {
|
|
|
|
|
return res(
|
|
|
|
|
// Respond with a 200 status code
|
|
|
|
|
ctx.status(200),
|
2023-03-16 18:02:40 +10:00
|
|
|
ctx.json<ServerStatusResponseModel>({
|
2023-02-09 17:06:16 +01:00
|
|
|
serverStatus: RuntimeLevelModel.INSTALL,
|
2024-02-09 22:19:41 +01:00
|
|
|
}),
|
2022-08-15 16:12:00 +02:00
|
|
|
);
|
2024-02-09 22:19:41 +01:00
|
|
|
}),
|
2022-08-15 16:12:00 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await page.goto('/install');
|
|
|
|
|
|
|
|
|
|
await page.waitForSelector('[data-test="installer"]');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('installer is shown', async ({ page }) => {
|
|
|
|
|
await expect(page).toHaveURL('/install');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test.describe('test success and failure', () => {
|
|
|
|
|
test.beforeEach(async ({ page }) => {
|
2022-08-16 11:22:20 +02:00
|
|
|
await page.waitForSelector('[data-test="installer-user"]');
|
|
|
|
|
await page.fill('[aria-label="name"]', 'Test');
|
|
|
|
|
await page.fill('[aria-label="email"]', 'test@umbraco');
|
|
|
|
|
await page.fill('[aria-label="password"]', 'test123456');
|
2022-08-15 16:12:00 +02:00
|
|
|
await page.click('[name="subscribeToNewsletter"]');
|
2022-08-08 14:14:51 +02:00
|
|
|
|
2022-08-15 16:12:00 +02:00
|
|
|
// Go to the next step
|
|
|
|
|
await page.click('[aria-label="Next"]');
|
2022-08-08 14:14:51 +02:00
|
|
|
|
2022-08-15 16:12:00 +02:00
|
|
|
// Set telemetry
|
2022-08-16 11:22:20 +02:00
|
|
|
await page.waitForSelector('[data-test="installer-telemetry"]');
|
|
|
|
|
await page.waitForSelector('uui-slider[name="telemetryLevel"]');
|
2022-08-15 16:12:00 +02:00
|
|
|
|
|
|
|
|
// Click [aria-label="Next"]
|
|
|
|
|
await page.click('[aria-label="Next"]');
|
|
|
|
|
|
|
|
|
|
// Database form
|
2022-08-16 11:22:20 +02:00
|
|
|
await page.waitForSelector('[data-test="installer-database"]');
|
2022-08-15 16:12:00 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('installer completes successfully', async ({ page }) => {
|
|
|
|
|
await page.click('[aria-label="Install"]');
|
|
|
|
|
await page.waitForSelector('umb-backoffice', { timeout: 30000 });
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('installer fails', async ({ page, worker }) => {
|
|
|
|
|
await worker.use(
|
|
|
|
|
// Override the server status to be "must-install"
|
|
|
|
|
rest.post(umbracoPath('/install/setup'), (_req, res, ctx) => {
|
|
|
|
|
return res(
|
|
|
|
|
// Respond with a 200 status code
|
|
|
|
|
ctx.status(400),
|
2023-07-07 09:42:46 +02:00
|
|
|
ctx.json<ProblemDetails>({
|
2022-08-15 16:12:00 +02:00
|
|
|
status: 400,
|
|
|
|
|
type: 'validation',
|
|
|
|
|
detail: 'Something went wrong',
|
|
|
|
|
errors: {
|
|
|
|
|
databaseName: ['The database name is required'],
|
|
|
|
|
},
|
2024-02-09 22:19:41 +01:00
|
|
|
}),
|
2022-08-15 16:12:00 +02:00
|
|
|
);
|
2024-02-09 22:19:41 +01:00
|
|
|
}),
|
2022-08-15 16:12:00 +02:00
|
|
|
);
|
2022-08-08 14:14:51 +02:00
|
|
|
|
2022-08-15 16:12:00 +02:00
|
|
|
await page.click('[aria-label="Install"]');
|
2022-08-15 16:51:42 +02:00
|
|
|
|
|
|
|
|
await page.waitForSelector('[data-test="installer-error"]');
|
|
|
|
|
|
|
|
|
|
await expect(page.locator('[data-test="error-message"]')).toHaveText('Something went wrong', {
|
|
|
|
|
useInnerText: true,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Click reset button
|
|
|
|
|
await page.click('#button-reset');
|
|
|
|
|
|
2022-08-16 11:22:20 +02:00
|
|
|
await page.waitForSelector('[data-test="installer-user"]');
|
2022-08-15 16:12:00 +02:00
|
|
|
});
|
|
|
|
|
});
|
2022-08-08 14:14:51 +02:00
|
|
|
});
|