265 lines
11 KiB
JavaScript
265 lines
11 KiB
JavaScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Network & Services - Network - DHCP', () => {
|
|
test.describe('General Settings Tab', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/network/dhcp', { waitUntil: 'networkidle' });
|
|
await page.waitForSelector('#general-tab-dndh');
|
|
const generalSettingsTab = await page.locator('#general-tab-dndh');
|
|
await generalSettingsTab.click();
|
|
await page.waitForTimeout(3000);
|
|
});
|
|
|
|
test('Title', async ({ page }) => {
|
|
expect(await page.title()).toBe('Difuse - Network - DHCP');
|
|
});
|
|
|
|
test('Card Header Title', async ({ page }) => {
|
|
const title = await page.locator('.card-header-title');
|
|
expect(await title).toBeTruthy();
|
|
});
|
|
|
|
test('Allocate IPs Sequentially', async ({ page }) => {
|
|
const label = await page.$('#general-form label:has-text("Allocate IPs Sequentially")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const switchField = await page.locator('#general-form .sequential_ip');
|
|
const switchFieldIsVisible = await switchField.isVisible();
|
|
expect(switchFieldIsVisible).toBeTruthy();
|
|
});
|
|
|
|
test('Authoritative ', async ({ page }) => {
|
|
const label = await page.$('#general-form label:has-text("Authoritative")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const switchField = await page.locator('#general-form .authoritative');
|
|
const switchFieldIsVisible = await switchField.isVisible();
|
|
expect(switchFieldIsVisible).toBeTruthy();
|
|
});
|
|
|
|
test('Hijack DNS ', async ({ page }) => {
|
|
const label = await page.$('#general-form label:has-text("Hijack DNS")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const switchField = await page.locator('#general-form .hijackdns');
|
|
const switchFieldIsVisible = await switchField.isVisible();
|
|
expect(switchFieldIsVisible).toBeTruthy();
|
|
});
|
|
|
|
test('Save Button', async ({ page }) => {
|
|
const button = page.locator('#general-form button.button.green:has-text("Save")');
|
|
expect(button).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
test.describe('Static Leases Tab', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/network/dhcp', { waitUntil: 'networkidle' });
|
|
await page.waitForSelector('#static-tab-dndh');
|
|
const staticLeasesTab = await page.locator('#static-tab-dndh');
|
|
await staticLeasesTab.click();
|
|
await page.waitForTimeout(3000);
|
|
});
|
|
|
|
test('Static Leases', async ({ page }) => {
|
|
const label = await page.locator('#content-static span:has-text("Static Leases")');
|
|
const visible = await label.isVisible();
|
|
expect(visible).toBeTruthy();
|
|
});
|
|
|
|
test('Static Leases Table Visible', async ({ page }) => {
|
|
const filterField = await page.locator('#sl-filter-field');
|
|
const filterFieldIsVisible = await filterField.isVisible();
|
|
const filterType = await page.locator('#sl-filter-type');
|
|
const filterTypeIsVisible = await filterType.isVisible();
|
|
const filterValue = await page.locator('#sl-filter-value');
|
|
const filterValueIsVisible = await filterValue.isVisible();
|
|
const ClearFilter = await page.locator('#sl-filter-clear');
|
|
const ClearFilterIsVisible = await ClearFilter.isVisible();
|
|
|
|
expect(filterFieldIsVisible && filterTypeIsVisible && filterValueIsVisible && ClearFilterIsVisible).toBe(true);
|
|
|
|
const table = await page.locator('#static-leases-t');
|
|
const tableIsVisible = await table.isVisible();
|
|
expect(tableIsVisible).toBe(true);
|
|
});
|
|
|
|
test('Static Leases Add Button', async ({ page }) => {
|
|
const addButton = await page.locator('#addNewStatic');
|
|
const visible = await addButton.isVisible();
|
|
expect(visible).toBeTruthy();
|
|
});
|
|
|
|
test('Active DHCPv4 Leases', async ({ page }) => {
|
|
const label = await page.locator('#content-static span:has-text("Active DHCPv4 Leases")');
|
|
const visible = await label.isVisible();
|
|
expect(visible).toBeTruthy();
|
|
});
|
|
|
|
test('Active DHCPv4 Leases Table Visible', async ({ page }) => {
|
|
const filterField = await page.locator('#\\34-filter-field');
|
|
const filterFieldIsVisible = await filterField.isVisible();
|
|
const filterType = await page.locator('#\\34-filter-type');
|
|
const filterTypeIsVisible = await filterType.isVisible();
|
|
const filterValue = await page.locator('#\\34-filter-value');
|
|
const filterValueIsVisible = await filterValue.isVisible();
|
|
const ClearFilter = await page.locator('#\\34-filter-clear');
|
|
const ClearFilterIsVisible = await ClearFilter.isVisible();
|
|
|
|
expect(filterFieldIsVisible && filterTypeIsVisible && filterValueIsVisible && ClearFilterIsVisible).toBe(true);
|
|
|
|
const table = await page.locator('#active-leases-t');
|
|
const tableIsVisible = await table.isVisible();
|
|
expect(tableIsVisible).toBe(true);
|
|
});
|
|
|
|
test('Active DHCPv6 Leases', async ({ page }) => {
|
|
const label = await page.locator('#content-static span:has-text("Active DHCPv6 Leases")');
|
|
const visible = await label.isVisible();
|
|
expect(visible).toBeTruthy();
|
|
});
|
|
|
|
test('Active DHCPv6 Leases Table Visible', async ({ page }) => {
|
|
const filterField = await page.locator('#\\36-filter-field');
|
|
const filterFieldIsVisible = await filterField.isVisible();
|
|
const filterType = await page.locator('#\\36-filter-type');
|
|
const filterTypeIsVisible = await filterType.isVisible();
|
|
const filterValue = await page.locator('#\\36-filter-value');
|
|
const filterValueIsVisible = await filterValue.isVisible();
|
|
const ClearFilter = await page.locator('#\\36-filter-clear');
|
|
const ClearFilterIsVisible = await ClearFilter.isVisible();
|
|
|
|
expect(filterFieldIsVisible && filterTypeIsVisible && filterValueIsVisible && ClearFilterIsVisible).toBe(true);
|
|
|
|
const table = await page.locator('#active-6leases-t');
|
|
const tableIsVisible = await table.isVisible();
|
|
expect(tableIsVisible).toBe(true);
|
|
});
|
|
});
|
|
|
|
test.describe('TFTP Server Tab', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/network/dhcp', { waitUntil: 'networkidle' });
|
|
await page.waitForSelector('#pxetftp-tab-dndh');
|
|
const tftpServerTab = await page.locator('#pxetftp-tab-dndh');
|
|
await tftpServerTab.click();
|
|
await page.waitForTimeout(3000);
|
|
});
|
|
|
|
test('TFTP Server', async ({ page }) => {
|
|
const label = await page.$('#content-pxetftp label:has-text("TFTP Server")');
|
|
expect(label).toBeTruthy();
|
|
});
|
|
|
|
test('TFTP Server Root Input Field', async ({ page }) => {
|
|
const label = await page.$('#content-pxetftp label:has-text("TFTP Server Root")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const inputField = await page.locator('#tftp-root');
|
|
const inputFieldIsVisible = await inputField.isVisible();
|
|
expect(inputFieldIsVisible).toBeTruthy();
|
|
});
|
|
|
|
test('Network Boot Image', async ({ page }) => {
|
|
const label = await page.$('#content-pxetftp label:has-text("Network Boot Image")');
|
|
expect(label).toBeTruthy();
|
|
});
|
|
|
|
test('Network Boot Image Input Field', async ({ page }) => {
|
|
const label = await page.$('#content-pxetftp label:has-text("Network Boot Image")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const inputField = await page.locator('#tftp-boot-image');
|
|
const inputFieldIsVisible = await inputField.isVisible();
|
|
expect(inputFieldIsVisible).toBeTruthy();
|
|
});
|
|
|
|
test('Save Button', async ({ page }) => {
|
|
const button = page.locator('#content-pxetftp button.button.green:has-text("Save")');
|
|
expect(button).toBeTruthy();
|
|
});
|
|
|
|
test('check Add New PXE Boot Option visible', async ({ page }) => {
|
|
await page.waitForSelector('#newPxeOption');
|
|
const addButton = await page.locator('#newPxeOption');
|
|
await addButton.click();
|
|
|
|
await page.waitForSelector('#newPxe');
|
|
const section = await page.locator('#newPxe');
|
|
const isSectionVisible = await section.isVisible();
|
|
expect(isSectionVisible).toBe(true);
|
|
|
|
const label = await page.$('#newPxe p:has-text("New PXE Boot Option")');
|
|
expect(label).toBeTruthy();
|
|
|
|
const fileName = await page.$('#content-pxetftp label:has-text("Filename")');
|
|
expect(fileName).toBeTruthy();
|
|
const fileNameInputField = await page.locator('#pxe-filename');
|
|
const fileNameInputFieldIsVisible = await fileNameInputField.isVisible();
|
|
expect(fileNameInputFieldIsVisible).toBeTruthy();
|
|
|
|
const serverName = await page.$('#content-pxetftp label:has-text("Server Name")');
|
|
expect(serverName).toBeTruthy();
|
|
const serverNameInputField = await page.locator('#pxe-server-name');
|
|
const serverNameInputFieldIsVisible = await serverNameInputField.isVisible();
|
|
expect(serverNameInputFieldIsVisible).toBeTruthy();
|
|
|
|
const serverAddress = await page.$('#content-pxetftp label:has-text("Server Address")');
|
|
expect(serverAddress).toBeTruthy();
|
|
const serverAddressInputField = await page.locator('#pxe-server-address');
|
|
const serverAddressInputFieldIsVisible = await serverAddressInputField.isVisible();
|
|
expect(serverAddressInputFieldIsVisible).toBeTruthy();
|
|
|
|
const dhcpOptions = await page.$('#content-pxetftp label:has-text("DHCP Options")');
|
|
expect(dhcpOptions).toBeTruthy();
|
|
const dhcpOptionsInputField = await page.locator('#pxe-dhcp-options');
|
|
const dhcpOptionsInputFieldIsVisible = await dhcpOptionsInputField.isVisible();
|
|
expect(dhcpOptionsInputFieldIsVisible).toBeTruthy();
|
|
|
|
const ForceDhcpOptions = await page.$('#content-pxetftp label:has-text("Force DHCP Options ")');
|
|
expect(ForceDhcpOptions).toBeTruthy();
|
|
const ForceDhcpOptionsToggle = await page.locator('#newPxe .pxe-force');
|
|
const ForceDhcpOptionsToggleIsVisible = await ForceDhcpOptionsToggle.isVisible();
|
|
expect(ForceDhcpOptionsToggleIsVisible).toBeTruthy();
|
|
|
|
const saveButton = page.locator('#newPxe button.button.green:has-text("Save")');
|
|
expect(saveButton).toBeTruthy();
|
|
|
|
const discardButton = page.locator('#discardPxeOption');
|
|
expect(discardButton).toBeTruthy();
|
|
});
|
|
|
|
test('Add, Read Values in Add New PXE Boot Option', async ({ page }) => {
|
|
await page.waitForSelector('#newPxeOption');
|
|
const addButton = await page.locator('#newPxeOption');
|
|
await addButton.click();
|
|
|
|
await page.waitForSelector('#pxe-filename');
|
|
const filename = await page.locator('#pxe-filename');
|
|
await filename.fill('pxelinux.0');
|
|
|
|
const serverName = await page.locator('#pxe-server-name');
|
|
await serverName.fill('office-server');
|
|
|
|
const serverAddress = await page.locator('#pxe-server-address');
|
|
await serverAddress.fill('192.168.2.1');
|
|
|
|
const dhcpOptions = await page.locator('#pxe-dhcp-options');
|
|
await dhcpOptions.fill('42,192.168.1.4');
|
|
|
|
const forceDHCPOptions = await page.locator('.pxe-force').elementHandle();
|
|
const isChecked = await forceDHCPOptions.isChecked();
|
|
if (!isChecked) {
|
|
await page.evaluate((checkbox) => checkbox.click(), forceDHCPOptions);
|
|
}
|
|
|
|
const saveButton = await page.locator('#newPxe button.button.green:has-text("Save")');
|
|
await saveButton.click();
|
|
|
|
expect(page.locator('div:has-text("pxelinux.0")')).toBeTruthy();
|
|
expect(page.locator('div:has-text("office-server")')).toBeTruthy();
|
|
expect(page.locator('div:has-text("192.168.2.1")')).toBeTruthy();
|
|
expect(page.locator('div:has-text("42,192.168.1.4")')).toBeTruthy();
|
|
});
|
|
});
|
|
});
|