debian-image-builder-frontend/playwright/test.spec.ts
schutzbot 6ef29afac3 Post release version bump
[skip ci]
2025-03-06 13:12:33 +01:00

108 lines
4.8 KiB
TypeScript

import { expect, test } from '@playwright/test';
import {
loginCockpit,
ibFrame,
} from './lib/lib';
test.describe('test', () => {
test('create blueprint', async ({ page }) => {
await loginCockpit(page, 'admin', 'foobar');
// await enableComposer(page);
const frame = await ibFrame(page);
// image output
await frame.getByRole('heading', { name: 'Images About image builder' });
await frame.getByRole('heading', { name: 'Blueprints' });
await frame.getByRole('heading', { name: 'No blueprints yet' });
await frame.getByTestId('create-blueprint-action-emptystate').click();
await frame.getByRole('heading', { name: 'Image output' });
await frame.getByTestId('checkbox-guest-image').click();
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'File system configuration' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Additional packages' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Users' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Timezone' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Locale' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Hostname' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Kernel' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Firewall' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Systemd services' });
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('heading', { name: 'Details' });
await frame.getByTestId('blueprint').fill('test-blueprint');
await expect(frame.getByTestId('blueprint')).toHaveValue('test-blueprint');
await frame.getByRole('button', { name: 'Next', exact: true }).click();
await frame.getByRole('button', { name: 'Create blueprint' }).click();
await frame.getByTestId('close-button-saveandbuild-modal').click();
await frame.getByRole('button', { name: 'Create blueprint' }).click();
await frame.getByText('test-blueprint');
});
test('edit blueprint', async ({ page }) => {
// package searching is really slow the first time
test.setTimeout(300000)
await loginCockpit(page, 'admin', 'foobar');
const frame = await ibFrame(page);
await frame.getByText('test-blueprint').click();
await frame.getByRole('button', { name: 'Edit blueprint' }).click();
await frame.getByRole('button', { name: 'Additional packages' }).click();
await frame.getByTestId('packages-search-input').fill('osbuild-composer');
await frame.getByTestId('packages-table').getByText('Searching');
await frame.getByRole('gridcell', { name: 'osbuild-composer' }).first();
await frame.getByRole('checkbox', { name: 'Select row 0' }).check();
await frame.getByRole('button', { name: 'Review and finish' }).click();
await frame.getByRole('button', { name: 'About packages' }).click();
await frame.getByRole('gridcell', { name: 'osbuild-composer' });
await frame.getByRole('button', { name: 'Save changes to blueprint' }).click();
await frame.getByRole('button', { name: 'Edit blueprint' }).click();
await frame.getByRole('button', { name: 'About packages' }).click();
await frame.getByRole('gridcell', { name: 'osbuild-composer' });
await frame.getByRole('button', { name: 'Cancel', exact: true }).click();
await frame.getByRole('heading', { name: 'All images' });
});
test('build blueprint', async ({ page }) => {
// add time enough for depsolving
test.setTimeout(60 * 1000);
await loginCockpit(page, 'admin', 'foobar');
const frame = await ibFrame(page);
await frame.getByText('test-blueprint').click();
await frame.getByTestId('blueprint-build-image-menu-option').click();
// make sure the image is present
await frame.getByTestId('images-table').getByText('Fedora');
});
test('delete blueprint', async ({ page }) => {
await loginCockpit(page, 'admin', 'foobar');
const frame = await ibFrame(page);
await frame.getByText('test-blueprint').click();
await frame.getByTestId('blueprint-action-menu-toggle').click();
await frame.getByRole('menuitem', { name: 'Delete blueprint' }).click();
await frame.getByRole('button', { name: 'Delete' }).click();
});
});