import { attribute, clickable, create, collection, isPresent, text, visitable, } from 'ember-cli-page-object'; import allocations from 'nomad-ui/tests/pages/components/allocations'; import twoStepButton from 'nomad-ui/tests/pages/components/two-step-button'; import LifecycleChart from 'nomad-ui/tests/pages/components/lifecycle-chart'; export default create({ visit: visitable('/allocations/:id'), title: text('[data-test-title]'), stop: twoStepButton('[data-test-stop]'), restart: twoStepButton('[data-test-restart]'), execButton: { scope: '[data-test-exec-button]', }, details: { scope: '[data-test-allocation-details]', job: text('[data-test-job-link]'), visitJob: clickable('[data-test-job-link]'), client: text('[data-test-client-link]'), visitClient: clickable('[data-test-client-link]'), }, resourceCharts: collection('[data-test-primary-metric]', { name: text('[data-test-primary-metric-title]'), chartClass: attribute('class', '[data-test-percentage-chart] progress'), }), resourceEmptyMessage: text('[data-test-resource-error-headline]'), lifecycleChart: LifecycleChart, tasks: collection('[data-test-task-row]', { name: text('[data-test-name]'), state: text('[data-test-state]'), message: text('[data-test-message]'), time: text('[data-test-time]'), ports: text('[data-test-ports]'), volumes: text('[data-test-volumes]'), hasUnhealthyDriver: isPresent('[data-test-icon="unhealthy-driver"]'), hasProxyTag: isPresent('[data-test-proxy-tag]'), clickLink: clickable('[data-test-name] a'), clickRow: clickable('[data-test-name]'), }), firstUnhealthyTask() { return this.tasks.toArray().findBy('hasUnhealthyDriver'); }, hasRescheduleEvents: isPresent('[data-test-reschedule-events]'), isEmpty: isPresent('[data-test-empty-tasks-list]'), wasPreempted: isPresent('[data-test-was-preempted]'), preempter: { scope: '[data-test-was-preempted]', status: text('[data-test-allocation-status]'), name: text('[data-test-allocation-name]'), priority: text('[data-test-job-priority]'), reservedCPU: text('[data-test-allocation-cpu]'), reservedMemory: text('[data-test-allocation-memory]'), visit: clickable('[data-test-allocation-id]'), visitJob: clickable('[data-test-job-link]'), visitClient: clickable('[data-test-client-link]'), }, preempted: isPresent('[data-test-preemptions]'), ...allocations('[data-test-preemptions] [data-test-allocation]', 'preemptions'), ports: collection('[data-test-allocation-port]', { dynamic: text('[data-test-allocation-port-is-dynamic]'), name: text('[data-test-allocation-port-name]'), address: text('[data-test-allocation-port-address]'), to: text('[data-test-allocation-port-to]'), }), services: collection('[data-test-service]', { name: text('[data-test-service-name]'), port: text('[data-test-service-port]'), tags: text('[data-test-service-tags]'), connect: text('[data-test-service-connect]'), upstreams: text('[data-test-service-upstreams]'), }), error: { isShown: isPresent('[data-test-error]'), title: text('[data-test-error-title]'), message: text('[data-test-error-message]'), seekHelp: clickable('[data-test-error-message] a'), }, 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]'), }, });