Beispiel #1
0
export default scope => ({
  scope,

  isPresent: isPresent(),

  toggle: clickable('[data-test-dropdown-trigger]'),

  options: collection('[data-test-dropdown-option]', {
    testContainer: '#ember-testing',
    resetScope: true,
    label: text(),
    key: attribute('data-test-dropdown-option'),
    toggle: clickable('label'),
  }),
});
Beispiel #2
0
function existingRepositoriesCollection(scope) {
  return collection(`${scope} li.profile-repolist-item`, {
    name: text('a.profile-repo'),
    isActive: hasClass('active', '.switch'),
    isMigrated: isPresent('a.already-migrated'),
    isDisabled: hasClass('non-admin', 'a.profile-repo'),
    toggle: clickable('.switch'),
    ariaChecked: attribute('aria-checked', '.switch'),
    role: attribute('role', '.switch')
  });
}
  test('returns chainable object', async function(assert) {
    assert.expect(1);

    let page = create({
      foo: clickable('span')
    });

    await this.adapter.createTemplate(this, page, '<span>Click me</span>');

    let ret = page.foo();
    assert.ok(ret.foo);
    await this.adapter.await(ret);
  });
  test('raises an error when the element is not visible and `visible` is true', async function(assert) {
    assert.expect(1);

    let page = create({
      foo: clickable('span', { visible: true })
    });

    await this.adapter.createTemplate(this, page, '<span style="display:none">Click me</span>');

    await this.adapter.throws(assert, function() {
      return page.foo();
    }, /page\.foo/, 'Element not found');
  });
  test("doesn't raise an error when the element is not visible and `visible` is not set", async function(assert) {
    assert.expect(1);

    let page = create({
      foo: clickable('span')
    });

    await this.adapter.createTemplate(this, page, '<span style="display:none">Click me</span>');

    this.adapter.$('span').one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test('finds element by index', async function(assert) {
    assert.expect(1);

    let expectedSelector = 'span:eq(3)';
    let page = create({
      foo: clickable('span', { at: 3 })
    });

    await this.adapter.createTemplate(this, page, '<span></span><span></span><span>Click me</span><span></span>');

    this.adapter.$(expectedSelector).one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test('calls click helper', async function(assert) {
    assert.expect(1);

    let expectedSelector = 'button';
    let page = create({
      foo: clickable(expectedSelector)
    });

    await this.adapter.createTemplate(this, page, '<button>Click me</button>');

    this.adapter.$(expectedSelector).one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test('looks for elements inside the scope', async function(assert) {
    assert.expect(1);

    let expectedSelector = '.scope span';
    let page;

    page = create({
      foo: clickable('span', { scope: '.scope' })
    });

    await this.adapter.createTemplate(this, page, '<div class="scope"><span>Click me</span></div>');

    this.adapter.$(expectedSelector).one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test('looks for elements outside the testing container', async function(assert) {
    assert.expect(1);

    let expectedContext = '#alternate-ember-testing';
    let page;

    page = create({
      foo: clickable('span', { testContainer: expectedContext })
    });

    await this.adapter.createTemplate(this, page, '<span>Click me</span>', { useAlternateContainer: true });

    this.adapter.$('span', expectedContext).one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test('resets scope', async function(assert) {
    assert.expect(1);

    let expectedSelector = 'span';
    let page;

    page = create({
      scope: '.scope',
      foo: clickable('span', { resetScope: true })
    });

    await this.adapter.createTemplate(this, page, '<span>Click me</span>');

    this.adapter.$(expectedSelector).one('click', () => assert.ok(1));

    await this.adapter.await(page.foo());
  });
  test("raises an error when the element doesn't exist", async function(assert) {
    assert.expect(1);

    let page = create({
      foo: {
        bar: {
          baz: {
            qux: clickable('button')
          }
        }
      }
    });

    await this.adapter.createTemplate(this, page);

    await this.adapter.throws(assert, function() {
      return page.foo.bar.baz.qux();
    }, /page\.foo\.bar\.baz\.qux/, 'Element not found');
  });
Beispiel #12
0
export default () => ({
  scope: '[data-test-job-editor]',

  isPresent: isPresent(),

  planError: error('data-test-plan-error'),
  parseError: error('data-test-parse-error'),
  runError: error('data-test-run-error'),

  plan: clickable('[data-test-plan]'),
  cancel: clickable('[data-test-cancel]'),
  run: clickable('[data-test-run]'),

  cancelEditing: clickable('[data-test-cancel-editing]'),
  cancelEditingIsAvailable: isPresent('[data-test-cancel-editing]'),

  planOutput: text('[data-test-plan-output]'),

  planHelp: {
    isPresent: isPresent('[data-test-plan-help-title]'),
    title: text('[data-test-plan-help-title]'),
    message: text('[data-test-plan-help-message]'),
    dismiss: clickable('[data-test-plan-help-dismiss]'),
  },

  editorHelp: {
    isPresent: isPresent('[data-test-editor-help-title]'),
    title: text('[data-test-editor-help-title]'),
    message: text('[data-test-editor-help-message]'),
    dismiss: clickable('[data-test-editor-help-dismiss]'),
  },

  editor: {
    isPresent: isPresent('[data-test-editor]'),
    contents: code('[data-test-editor]'),
    fillIn: codeFillable('[data-test-editor]'),
  },

  dryRunMessage: {
    scope: '[data-test-dry-run-message]',
    title: text('[data-test-dry-run-title]'),
    body: text('[data-test-dry-run-body]'),
    errored: hasClass('is-warning'),
    succeeded: hasClass('is-primary'),
  },
});
Beispiel #13
0
import { Base } from '../show';
import { create, clickable, collection, isPresent } from 'ember-cli-page-object';
import { code } from 'vault/tests/pages/helpers/codemirror';

export default create({
  ...Base,
  deleteBtn: clickable('[data-test-secret-delete] button'),
  confirmBtn: clickable('[data-test-confirm-button]'),
  rows: collection('data-test-row-label'),
  toggleJSON: clickable('[data-test-secret-json-toggle]'),
  toggleIsPresent: isPresent('[data-test-secret-json-toggle]'),
  edit: clickable('[data-test-secret-edit]'),
  editIsPresent: isPresent('[data-test-secret-edit]'),
  editor: {
    content: code('[data-test-component="json-editor"]'),
  },
  deleteSecret() {
    return this.deleteBtn().confirmBtn();
  },
});
Beispiel #14
0
import { create, visitable, collection, attribute, clickable } from 'ember-cli-page-object';

import filter from 'consul-ui/tests/pages/components/acl-filter';
export default create({
  visit: visitable('/:dc/acls'),
  acls: collection('[data-test-tabular-row]', {
    name: attribute('data-test-acl', '[data-test-acl]'),
    acl: clickable('a'),
    actions: clickable('label'),
    delete: clickable('[data-test-delete]'),
    confirmDelete: clickable('button.type-delete'),
  }),
  filter: filter,
});
Beispiel #15
0
    itemScope: ".debug_navs_orders-nav .child",

    item: {
      label: text(".label")
    }
  }),

  companies: collection({
    itemScope: ".debug_navs_orders-nav .parent",

    item: {
      label: text(".label")
    }
  }),

  openQuickMenu: clickable(".debug_navs_orders-nav .debug_ui_popup-menu .trigger"),

  stubOrders: clickable(".stubOrders"),
  createOrder: clickable(".createOrder"),

  // createOrder(){
  //   $(".createOrder").click();
  // },

  selectLocation(location) {
    return selectChoose(".locationContainer", location.get("label"));
  },

  toggleFilterOptions: clickable(".titleBar .action"),
  toggleIncludeDraft: clickable(".includeUnpublished input"),
  toggleIncludePublished: clickable(".includePublished input"),
Beispiel #16
0
  name: text('.profile-header h1'),
  nameBadge: { scope: '.profile-header .badge' },
  login: text('.login'),

  avatar: {
    scope: '.profile-header .avatar-wrapper',

    src: attribute('src', 'img'),
    checkmark: { scope: '.checkmark' }
  },

  syncButton: {
    scope: '.sync-button',
    lastSynced: text('.sync-last'),
    text: text('.button'),
    click: clickable('.button'),
  },

  subscriptionStatus: {
    scope: '.subscription-status',
    text: text('[data-test-message]'),

    link: {
      scope: 'a'
    }
  },

  filter: fillable('[data-test-legacy-repos] [data-test-filter-field] [data-test-input-field]'),
  noRepositoriesFoundByFilter: text('#administerable-repositories .no-results'),

  notFoundOrgName: text('.page-title .h2--red'),
import { collection, isPresent, property, clickable } from 'ember-cli-page-object';

export default {
  wizardItems: collection('[data-test-select-input]', {
    hasDisabledTooltip: isPresent('[data-test-tooltip]'),
  }),
  hasDisabledStartButton: property('disabled', '[data-test-start-button]'),
  selectSecrets: clickable('[data-test-checkbox=Secrets]'),
};
Beispiel #18
0
import { create, visitable, clickable } from 'ember-cli-page-object';

export default create({
  visit: visitable('/settings'),
  submit: clickable('[type=submit]'),
});
import {
  clickable,
  isVisible,
  text
} from 'ember-cli-page-object';

export default {
  scope: '.error-wrapper',

  body: text('p:first'),

  button: {
    scope: 'a.button',
    text: text()
  },

  clickLink: clickable('a'),

  has404Image: isVisible('.not-found-img'),
  hasMaintenanceIcon: isVisible('.maintenance-icon'),
  hasServerErrorImage: isVisible('.server-error-img'),

  title: text('h1')
};
Beispiel #20
0
import { clickable, collection, fillable, text, selectable, isPresent } from 'ember-cli-page-object';

import fields from './form-field';

export default {
  ...fields,
  scope: '.config-pki-ca',
  text: text('[data-test-text]'),
  title: text('[data-test-title]'),

  hasTitle: isPresent('[data-test-title]'),
  hasError: isPresent('[data-test-error]'),
  hasSignIntermediateForm: isPresent('[data-test-sign-intermediate-form]'),

  replaceCA: clickable('[data-test-go-replace-ca]'),
  replaceCAText: text('[data-test-go-replace-ca]'),
  setSignedIntermediateBtn: clickable('[data-test-go-set-signed-intermediate]'),
  signIntermediateBtn: clickable('[data-test-go-sign-intermediate]'),
  caType: selectable('[data-test-input="caType"]'),
  submit: clickable('[data-test-submit]'),
  back: clickable('[data-test-back-button]'),

  signedIntermediate: fillable('[data-test-signed-intermediate]'),
  downloadLinks: collection({ itemScope: '[data-test-ca-download-link]' }),
  rows: collection({
    itemScope: '[data-test-table-row]',
  }),
  rowValues: collection({
    itemScope: '[data-test-row-value]',
  }),
  csr: text('[data-test-row-value="CSR"]', { normalize: false }),
Beispiel #21
0
import { Base } from '../show';
import { create, clickable, collection, isPresent } from 'ember-cli-page-object';

export default create({
  ...Base,
  rows: collection('data-test-row-label'),
  edit: clickable('[data-test-edit-link]'),
  editIsPresent: isPresent('[data-test-edit-link]'),
  generate: clickable('[data-test-backend-credentials]'),
  generateIsPresent: isPresent('[data-test-backend-credentials]'),
  deleteBtn: clickable('[data-test-confirm-action-trigger]'),
  confirmBtn: clickable('[data-test-confirm-button]'),
  deleteRole() {
    return this.deleteBtn().confirmBtn();
  },
});
Beispiel #22
0
import { Base } from '../show';
import { create, clickable, collection, isPresent } from 'ember-cli-page-object';

export default create({
  ...Base,
  rows: collection('data-test-row-label'),
  edit: clickable('[data-test-edit-link]'),
  editIsPresent: isPresent('[data-test-edit-link]'),
  generate: clickable('[data-test-backend-credentials]'),
  generateIsPresent: isPresent('[data-test-backend-credentials]'),
});
Beispiel #23
0
import { clickable, fillable, text, isPresent } from 'ember-cli-page-object';
import fields from './form-field';

export default {
  ...fields,
  scope: '.config-pki',
  text: text('[data-test-text]'),
  title: text('[data-test-title]'),
  hasTitle: isPresent('[data-test-title]'),
  hasError: isPresent('[data-test-error]'),
  submit: clickable('[data-test-submit]'),
  fillInField: fillable('[data-test-field]'),
};
Beispiel #24
0
  clickable,
  triggerable,
  text
} from 'ember-cli-page-object';

export default create({

  month: text('.en-daypicker-meta-month'),
  year:  text('.en-daypicker-meta-year option:selected'),

  hasToday: isVisible('.is-today'),
  today:    text('.is-today'),

  selectedDay: text('.en-daypicker-day.is-selected'),

  days: collection({
    itemScope: '.en-daypicker-day:not(.is-disabled)',

    item: {
      daypickerDay: attribute('data-daypicker-day'),
      click: clickable(),
      down:  triggerable('keydown', '', { eventProperties: { keyCode: 40 } }),
      up:    triggerable('keydown', '', { eventProperties: { keyCode: 38 } }),
      prev:  triggerable('keydown', '', { eventProperties: { keyCode: 37 } }),
      next:  triggerable('keydown', '', { eventProperties: { keyCode: 39 } }),
      enter: triggerable('keydown', '', { eventProperties: { keyCode: 13 } }),
      esc:   triggerable('keydown', '', { eventProperties: { keyCode: 27 } }),
    }
  })
});
Beispiel #25
0
export default {
	scope: '.wds-dropdown',

	isActive: hasClass('wds-is-active'),
	hasShadow: hasClass('wds-has-shadow'),
	noChevron: hasClass('wds-no-chevron'),
	hasDarkShadow: hasClass('wds-has-dark-shadow'),
	isTouchDevice: hasClass('wds-is-touch-device'),

	open: triggerable('mouseenter'),
	close: triggerable('mouseleave'),

	toggle: {
		scope: '.wds-dropdown__toggle',
		href: attribute('href'),
		click: clickable('span'),
		isDiv: is('div'),
		isLink: is('a'),

		attr,

		icon: {
			scope: '.wds-dropdown__toggle-chevron',
		},
	},

	content: {
		scope: '.wds-dropdown__content',

		isLeftAligned: hasClass('wds-is-left-aligned'),
		isRightAligned: hasClass('wds-is-right-aligned'),
Beispiel #26
0
import { Base } from '../create';
import { clickable, visitable, create, fillable } from 'ember-cli-page-object';

export default create({
  ...Base,
  visitEdit: visitable('/vault/secrets/:backend/edit/:id'),
  visitEditRoot: visitable('/vault/secrets/:backend/edit'),
  keyType: fillable('[data-test-input="keyType"]'),
  defaultUser: fillable('[data-test-input="defaultUser"]'),
  toggleMore: clickable('[data-test-toggle-more]'),
  name: fillable('[data-test-input="name"]'),
  CIDR: fillable('[data-test-input="cidrList"]'),
  save: clickable('[data-test-role-ssh-create]'),

  async createOTPRole(name) {
    await this.toggleMore()
      .keyType('otp')
      .name(name)
      .defaultUser('admin')
      .CIDR('0.0.0.0/0')
      .save();
  },
});
import {
  clickable,
  collection,
  fillable,
  isVisible
} from 'ember-cli-page-object';

export default {
  scope: '.comment-item',

  clickEdit: clickable('.edit'),
  clickSave: clickable('.save'),
  clickCancel: clickable('.cancel'),

  codeThemeSelectorVisible: isVisible('.code-theme-selector'),

  commentBody: {
    scope: '.comment-body'
  },
  nullCommentBody:{
    scope: '[data-test-markdown-body-empty]'
  },
  editLink: {
    scope: '.edit'
  },

  editor: {
    scope: '.editor-with-preview',

    bodyPreview: {
      scope: '.body-preview p'
Beispiel #28
0
import { Base } from '../show';
import { create, clickable, collection, text, isPresent } from 'ember-cli-page-object';

export default create({
  ...Base,
  rows: collection({
    scope: 'data-test-row-label',
  }),
  certificate: text('[data-test-row-value="Certificate"]'),
  hasCert: isPresent('[data-test-row-value="Certificate"]'),
  edit: clickable('[data-test-edit-link]'),
  editIsPresent: isPresent('[data-test-edit-link]'),
  generateCert: clickable('[data-test-credentials-link]'),
  generateCertIsPresent: isPresent('[data-test-credentials-link]'),
  signCert: clickable('[data-test-sign-link]'),
  signCertIsPresent: isPresent('[data-test-sign-link]'),
});
Beispiel #29
0
  pageSize: 10,

  visit: visitable('/jobs'),

  search: fillable('[data-test-jobs-search] input'),

  jobs: collection('[data-test-job-row]', {
    id: attribute('data-test-job-row'),
    name: text('[data-test-job-name]'),
    link: attribute('href', '[data-test-job-name] a'),
    status: text('[data-test-job-status]'),
    type: text('[data-test-job-type]'),
    priority: text('[data-test-job-priority]'),
    taskGroups: text('[data-test-job-task-groups]'),

    clickRow: clickable(),
    clickName: clickable('[data-test-job-name] a'),
  }),

  isEmpty: isPresent('[data-test-empty-jobs-list]'),
  emptyState: {
    headline: text('[data-test-empty-jobs-list-headline]'),
  },

  error: {
    isPresent: isPresent('[data-test-error]'),
    title: text('[data-test-error-title]'),
    message: text('[data-test-error-message]'),
    seekHelp: clickable('[data-test-error-message] a'),
  },
Beispiel #30
0
import {
  attribute,
  create,
  visitable,
  clickable,
  collection,
  text,
  hasClass,
  isVisible
} from 'ember-cli-page-object';

export default create({
  visit: visitable('/dashboard'),
  repoTitle: text('.repo-title'),
  accountFilter: clickable('.dashboard-header .organisation-filter .option-list a:first-of-type'),
  syncButton: clickable('.dashboard-header .sync-button button'),
  syncButtonIsSyncing: hasClass('is-syncing', '.dashboard-header .sync-button button'),

  activeRepos: {
    visit: clickable('[data-test-active-repos-tab]'),

    repos: collection('.dashboard-active .repo-list li.rows--dashboard', {
      owner: text('.dash-header .row-label a'),
      repoName: text('.dash-header .row-content a'),
      defaultBranch: text('.dash-default .row-content a'),
      lastBuild: text('.dash-last a .label-align'),
      triggerBuild: clickable('.dash-menu .dropup-list li:first-of-type a'),
      clickStarButton: clickable('.dash-head .dash-star'),
      hasTofuButton: isVisible('.dash-menu .dropup')
    })
  },