open-nomad/ui/tests/pages/layout.js

136 lines
3.2 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import {
attribute,
create,
clickable,
collection,
hasClass,
isHidden,
isPresent,
property,
text,
} from 'ember-cli-page-object';
export default create({
navbar: {
scope: '[data-test-global-header]',
regionSwitcher: {
scope: '[data-test-region-switcher-parent]',
isPresent: isPresent(),
open: clickable('.ember-power-select-trigger'),
options: collection('.ember-power-select-option', {
label: text(),
}),
},
search: {
scope: '[data-test-search-parent]',
click: clickable('.ember-power-select-trigger'),
groups: collection('.ember-power-select-group', {
testContainer: '.ember-power-select-options',
resetScope: true,
name: text('.ember-power-select-group-name'),
options: collection('.ember-power-select-option'),
}),
noOptionsShown: isHidden('.ember-power-select-options', {
testContainer: '.ember-basic-dropdown-content',
resetScope: true,
}),
field: {
scope: '.ember-power-select-search input',
testContainer: 'html',
resetScope: true,
},
},
end: {
scope: '.navbar-end',
consulLink: {
scope: '[data-test-header-consul-link]',
text: text(),
link: property('href'),
},
vaultLink: {
scope: '[data-test-header-vault-link]',
text: text(),
link: property('href'),
},
signInLink: {
scope: '[data-test-header-signin-link]',
text: text(),
link: property('href'),
},
profileDropdown: {
scope: '[data-test-header-profile-dropdown]',
text: text(),
open: clickable(),
options: collection('.dropdown-label', {
label: text(),
choose: clickable(),
}),
},
},
},
gutter: {
scope: '[data-test-gutter-menu]',
visitJobs: clickable('[data-test-gutter-link="jobs"]'),
optimize: {
scope: '[data-test-gutter-link="optimize"]',
},
variables: {
scope: '[data-test-gutter-link="variables"]',
},
visitClients: clickable('[data-test-gutter-link="clients"]'),
visitServers: clickable('[data-test-gutter-link="servers"]'),
visitStorage: clickable('[data-test-gutter-link="storage"]'),
},
breadcrumbs: collection('[data-test-breadcrumb]', {
id: attribute('data-test-breadcrumb'),
text: text(),
visit: clickable(),
}),
breadcrumbFor(id) {
return this.breadcrumbs.toArray().find((crumb) => crumb.id === id);
},
error: {
isPresent: isPresent('[data-test-error]'),
title: text('[data-test-error-title]'),
message: text('[data-test-error-message]'),
},
inlineError: {
isShown: isPresent('[data-test-inline-error]'),
title: text('[data-test-inline-error-title]'),
message: text('[data-test-inline-error-body]'),
dismiss: clickable('[data-test-inline-error-close]'),
isDanger: hasClass('is-danger', '[data-test-inline-error]'),
isWarning: hasClass('is-warning', '[data-test-inline-error]'),
},
keyboard: {
modalShown: isPresent('.keyboard-shortcuts'),
},
});