linkerd2/web/app/integration/specs/namespace-select.js

115 lines
4.5 KiB
JavaScript

const assert = require('assert');
let namespaceSelectionButton, namespaceOptions, newNamespaceOption;
describe('namespace selection test', function() {
it('should identify a namespace selection button titled `default`', () => {
browser.url(global.dashboardAddress);
menuButtons = browser.react$$('MenuList Button');
namespaceSelectionButton = menuButtons.find(button => {
return button.getText() === "DEFAULT";
});
})
it('should open a menu when namespace selection button is clicked', () => {
namespaceSelectionButton.click();
browser.waitUntil(() => {
namespaceOptions = browser.react$$('MenuList Menu MenuItem');
return namespaceOptions.length > 0;
}, 1000, 'timed out while waiting for namespace options to display');
});
it('should click on a namespace option', () => {
newNamespaceOption = namespaceOptions.find(namespace => {
return namespace.getText() === "linkerd";
});
newNamespaceOption.click();
});
it('namespace selection button should display new namespace option', () => {
const newNamespace = namespaceSelectionButton.getText().toLowerCase();
assert.equal(newNamespace, "linkerd");
});
it('should confirm namespace selection menu is closed', () => {
browser.waitUntil(() => {
namespaceOptions = browser
.react$$('MenuList Menu MenuItem')
.find(namespaceOption => {
return namespaceOption.getText() === "All Namespaces";
});
return !namespaceOptions;
}, 1000, 'timed out while waiting for namespace options to disappear');
});
it('should click on the deployments list view', () => {
const resourceOptions = browser.react$$('MenuList MenuItem ListItem');
const deploymentResource = resourceOptions.find(resource => {
return resource.getText() === "Deployments";
});
deploymentResource.click();
});
it('breadcrumb header text should display correct text', () => {
const breadcrumbHeader = browser.react$$('BreadcrumbHeader');
const breadcrumbText = breadcrumbHeader.reduce((acc, crumb) => {
acc+= crumb.getText();
return acc;
}, '');
assert.equal(breadcrumbText, "Namespace >linkerd >Deployment");
});
it('should display a list of resources', () => {
browser.waitUntil(() => {
return browser
.react$$('MetricsTable BaseTable TableBody TableRow a')
.length > 0;
}, 1000, 'timed out while waiting for resource list');
});
it('should click on a resource detail page', () => {
const resourceList = browser
.react$$('MetricsTable BaseTable TableBody TableRow a');
const resourceDetailLink = resourceList.find(tableRowLink => {
return tableRowLink.getText() === "linkerd-controller";
});
resourceDetailLink.click();
});
it('should select a different namespace from a resource detail page', () => {
namespaceSelectionButton.click();
namespaceOptions = browser.react$$('MenuList Menu MenuItem');
newNamespaceOption = namespaceOptions.find(namespace => {
return namespace.getText() === "default";
})
newNamespaceOption.click();
})
it('should cancel the modal confirmation dialog', () => {
let cancelNamespaceChangeButton = browser
.react$$('NamespaceConfirmationModal Button')
.find(button => {
return button.getText() === "NO";
});
cancelNamespaceChangeButton.click();
});
it('should close the confirmation dialog', () => {
browser.waitUntil(() => {
let modal = browser.react$('NamespaceConfirmationModal');
return !modal.isDisplayed();
}, 1000, 'timed out while waiting to close the confirmation dialog');
});
it('should select a different namespace', () => {
namespaceSelectionButton.click();
namespaceOptions = browser.react$$('MenuList Menu MenuItem');
newNamespaceOption = namespaceOptions.find(namespace => {
return namespace.getText() === "default";
});
newNamespaceOption.click();
});
it('should accept the modal confirmation dialog', () => {
let acceptNamespaceChangeButton = browser
.react$$('NamespaceConfirmationModal Button').find(button => {
return button.getText() === "YES";
});
acceptNamespaceChangeButton.click();
});
it('should navigate to the namespace detail page for new namespace', () => {
const breadcrumbHeader = browser.react$$('BreadcrumbHeader');
const breadcrumbText = breadcrumbHeader.reduce((acc, crumb) => {
acc = acc + crumb.getText();
return acc;
}, '')
assert.equal(breadcrumbText, "Namespace >default");
});
})