test(e2e): Add test for worker (#2320)

* test(e2e): Add test for worker

* CR: Fix selector

* test(e2e): Skip test on safari

* test(e2e): Check create config
This commit is contained in:
Michael Li authored and GitHub committed 2024-06-14 14:59:23 -04:00
1 parent 7b6f625d3e
commit 09c60c7bcb
3 files changed
+181

No files matched your search

@@ -159,6 +159,7 @@
@value={{this.createConfigText}}
@hasCopyButton={{true}}
@hasLineNumbers={{false}}
data-test-worker-directory
/>
<p>
@@ -170,6 +171,7 @@
@value={{this.workerConfigText}}
@hasCopyButton={{true}}
@hasLineNumbers={{false}}
data-test-worker-config
/>
<p>
@@ -0,0 +1,94 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
/* eslint-disable no-undef */
const { expect } = require('@playwright/test');
const { test } = require('@playwright/test');
const { authenticatedState } = require('../helpers/general');
test.use({ storageState: authenticatedState });
test('Create a worker (enterprise) @ent @docker @aws', async ({
page,
browserName,
}) => {
test.skip(browserName === 'webkit', 'Bug in worker form on Safari');
await page.goto('/');
await page
.getByRole('navigation', { name: 'General' })
.getByRole('link', { name: 'Workers' })
.click();
await page.getByRole('link', { name: 'New', exact: true }).click();
// Populate config fields
await page.getByLabel('Worker public address').fill('worker1.example.com');
await page.getByLabel('Config file path').fill('/home/ubuntu/boundary');
await page.getByLabel('Initial upstreams').fill('10.0.0.1, 10.0.0.2');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Key')
.fill('type');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Value')
.fill('downstream, pki');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByRole('button', { name: 'Add' })
.click();
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Key')
.last()
.fill('test');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Value')
.last()
.fill('example');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByRole('button', { name: 'Add' })
.click();
await page.getByRole('switch', { name: 'Enable Recording Storage' }).click();
await page.getByLabel('Recording Storage Path').fill('/tmp/recordings');
// Check auto-populated config
const dirLocator = '[data-test-worker-directory]';
await expect(page.locator(dirLocator)).toContainText(
'mkdir /home/ubuntu/boundary/ ;',
);
await expect(page.locator(dirLocator)).toContainText(
'touch /home/ubuntu/boundary/pki-worker.hcl',
);
const configLocator = '[data-test-worker-config]';
await expect(page.locator(configLocator)).toContainText(
'public_addr = "worker1.example.com"',
);
await expect(page.locator(configLocator)).toContainText(
'auth_storage_path = "/home/ubuntu/boundary/worker1"',
);
await expect(page.locator(configLocator)).toContainText(
'initial_upstreams = ["10.0.0.1", "10.0.0.2"]',
);
await expect(page.locator(configLocator)).toContainText(
'type = ["downstream", "pki"]',
);
await expect(page.locator(configLocator)).toContainText('test = ["example"]');
await expect(page.locator(configLocator)).toContainText(
'recording_storage_path = "/tmp/recordings"',
);
// Try using an invalid worker token. Expect an error
await page.getByLabel('Worker Auth Registration Request').fill('test');
await page.getByRole('button', { name: 'Register' }).click();
await expect(
page.getByRole('alert').getByText('Error', { exact: true }),
).toBeVisible();
await page.getByRole('button', { name: 'Dismiss' }).click();
});
+85
View File
@@ -0,0 +1,85 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
/* eslint-disable no-undef */
const { expect } = require('@playwright/test');
const { test } = require('@playwright/test');
const { authenticatedState } = require('../helpers/general');
test.use({ storageState: authenticatedState });
test('Create a worker @ce @docker @aws', async ({ page, browserName }) => {
test.skip(browserName === 'webkit', 'Bug in worker form on Safari');
await page.goto('/');
await page
.getByRole('navigation', { name: 'General' })
.getByRole('link', { name: 'Workers' })
.click();
await page.getByRole('link', { name: 'New', exact: true }).click();
// Populate config fields
await page.getByLabel('Worker public address').fill('worker1.example.com');
await page.getByLabel('Config file path').fill('/home/ubuntu/boundary');
await page.getByLabel('Initial upstreams').fill('10.0.0.1, 10.0.0.2');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Key')
.fill('type');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Value')
.fill('downstream, pki');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByRole('button', { name: 'Add' })
.click();
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Key')
.last()
.fill('test');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByLabel('Value')
.last()
.fill('example');
await page
.getByRole('group', { name: 'Worker Tags' })
.getByRole('button', { name: 'Add' })
.click();
// Check auto-populated configs
const dirLocator = '[data-test-worker-directory]';
await expect(page.locator(dirLocator)).toContainText(
'mkdir /home/ubuntu/boundary/ ;',
);
await expect(page.locator(dirLocator)).toContainText(
'touch /home/ubuntu/boundary/pki-worker.hcl',
);
const configLocator = '[data-test-worker-config]';
await expect(page.locator(configLocator)).toContainText(
'public_addr = "worker1.example.com"',
);
await expect(page.locator(configLocator)).toContainText(
'auth_storage_path = "/home/ubuntu/boundary/worker1"',
);
await expect(page.locator(configLocator)).toContainText(
'initial_upstreams = ["10.0.0.1", "10.0.0.2"]',
);
await expect(page.locator(configLocator)).toContainText(
'type = ["downstream", "pki"]',
);
await expect(page.locator(configLocator)).toContainText('test = ["example"]');
// Try using an invalid worker token. Expect an error
await page.getByLabel('Worker Auth Registration Request').fill('test');
await page.getByRole('button', { name: 'Register' }).click();
await expect(
page.getByRole('alert').getByText('Error', { exact: true }),
).toBeVisible();
await page.getByRole('button', { name: 'Dismiss' }).click();
});