Post release version bump
[skip ci]
This commit is contained in:
parent
9fdd6f0b43
commit
6ef29afac3
10 changed files with 398 additions and 3898 deletions
26
playwright/lib/lib.ts
Normal file
26
playwright/lib/lib.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import { expect, type Page, type FrameLocator } from '@playwright/test';
|
||||
|
||||
export const ibFrame = (page: Page): FrameLocator => {
|
||||
return page.locator('iframe[name="cockpit1\\:localhost\\/cockpit-image-builder"]').contentFrame();
|
||||
}
|
||||
|
||||
export const loginCockpit = async (
|
||||
page: Page,
|
||||
username?: string,
|
||||
password?: string
|
||||
) => {
|
||||
if (!username || !password) {
|
||||
throw new Error('Username or password not found');
|
||||
}
|
||||
|
||||
await page.goto('/cockpit-image-builder');
|
||||
|
||||
await page.getByRole('textbox', { name: 'User name' }).fill(username);
|
||||
await page.getByRole('textbox', { name: 'Password' }).fill(password);
|
||||
|
||||
// cockpit-image-builder needs superuser
|
||||
await page.getByRole('button', { name: 'Log in' }).click();
|
||||
await page.getByRole('button', { name: 'Limited access' }).click();
|
||||
await page.getByText('Close').click();
|
||||
await page.getByRole('button', { name: 'Administrative access' });
|
||||
};
|
||||
108
playwright/test.spec.ts
Normal file
108
playwright/test.spec.ts
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
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();
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue