* build test apps with webpack * add extensions test app * update e2e tests * remove non-build test apps using amd * use @grafana/plugin-configs rather than create-plugin config * Update e2e/plugin-e2e/plugin-e2e-api-tests/as-admin-user/extensions/usePluginComponents.spec.ts Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> * Update package.json Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> * use run dir variable instead of hardcoded path * add dummy licence file * add separate step for building test plugins * support nested plugins * remove react-router-dom from the externals array * remove add_mode dev * lint starlark * pass license path as env variable * fix the path * chore(e2e-plugins): clean up dependencies to match core versions * refactor(e2e-plugins): prefer extending webpack plugins-config * docs(e2e-plugins): add basic info to extensions test plugin readme * update readme * change dir name from custom plugins to test plugins * change root readme * update lockfile --------- Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { test, expect } from '@grafana/plugin-e2e';
|
|
|
|
import { ensureExtensionRegistryIsPopulated } from './utils';
|
|
|
|
const testIds = {
|
|
container: 'main-app-body',
|
|
actions: {
|
|
button: 'action-button',
|
|
},
|
|
modal: {
|
|
container: 'container',
|
|
open: 'open-link',
|
|
},
|
|
appA: {
|
|
container: 'a-app-body',
|
|
},
|
|
appB: {
|
|
modal: 'b-app-modal',
|
|
reusableComponent: 'b-app-configure-extension-component',
|
|
},
|
|
legacyAPIPage: {
|
|
container: 'data-testid pg-two-container',
|
|
},
|
|
};
|
|
|
|
const pluginId = 'grafana-extensionstest-app';
|
|
|
|
test('should extend the actions menu with a link to a-app plugin', async ({ page }) => {
|
|
await page.goto(`/a/${pluginId}/legacy-apis`);
|
|
await ensureExtensionRegistryIsPopulated(page);
|
|
await page.getByTestId(testIds.actions.button).click();
|
|
await page.getByTestId(testIds.container).getByText('Go to A').click();
|
|
await page.getByTestId(testIds.modal.open).click();
|
|
await expect(page.getByTestId(testIds.appA.container)).toBeVisible();
|
|
});
|
|
|
|
test('should extend the actions menu with a command triggered from b-app plugin', async ({ page }) => {
|
|
await page.goto(`/a/${pluginId}/legacy-apis`);
|
|
await ensureExtensionRegistryIsPopulated(page);
|
|
await expect(
|
|
page.getByTestId(testIds.legacyAPIPage.container).getByTestId(testIds.appB.reusableComponent)
|
|
).toHaveText('Hello World!');
|
|
});
|
|
|
|
test('should extend main app with component extension from app B', async ({ page }) => {
|
|
await page.goto(`/a/${pluginId}/legacy-apis`);
|
|
await ensureExtensionRegistryIsPopulated(page);
|
|
await page.getByTestId(testIds.actions.button).click();
|
|
await page.getByTestId(testIds.container).getByText('Open from B').click();
|
|
await expect(page.getByTestId(testIds.appB.modal)).toBeVisible();
|
|
});
|