Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

automation: rke1 cluster prov aws #10644

Merged
merged 8 commits into from
Apr 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions cypress/e2e/po/components/ember/ember-banners.po.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import EmberComponentPo from '@/cypress/e2e/po/components/ember/ember-component.po';

export default class EmberBannersPo extends EmberComponentPo {
/**
* Get banner content
* @returns
*/
bannerContent(): Cypress.Chainable {
return this.self().find('.banner-message');
}
}
4 changes: 4 additions & 0 deletions cypress/e2e/po/components/ember/ember-checkbox-input.po.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@ export default class EmberCheckboxInputPo extends EmberComponentPo {
private input(): Cypress.Chainable {
return this.self().find('.ember-checkbox');
}

checkOptionSelected() {
return this.input().should('be.checked');
}
}
64 changes: 64 additions & 0 deletions cypress/e2e/po/components/ember/ember-form-node-pools.po.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import EmberComponentPo from '@/cypress/e2e/po/components/ember/ember-component.po';
import EmberCheckboxInputPo from '@/cypress/e2e/po/components/ember/ember-checkbox-input.po';
import EmberInputPo from '@/cypress/e2e/po/components/ember/ember-input.po';
import EmberSelectPo from '@/cypress/e2e/po/components/ember/ember-select.po';

export default class EmberFormNodePoolsPo extends EmberComponentPo {
addNodePool() {
return cy.iFrame().find('button').contains('Add Node Pool').click();
}

/**
* set node name
* @param index
* @returns
*/
name(index: number) {
return new EmberInputPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(1) input`);
}

/**
* set node count
* @param index
* @returns
*/
count(index: number) {
return new EmberInputPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(2) input`);
}

/**
* select node template
* @param index
* @returns
*/
template(index: number) {
return new EmberSelectPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(3) select optgroup`);
}

/**
* set etcd
* @param index
* @returns
*/
etcd(index: number) {
return new EmberCheckboxInputPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(6)`);
}

/**
* set control plane
* @param index
* @returns
*/
controlPlane(index: number) {
return new EmberCheckboxInputPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(7)`);
}

/**
* set worker
* @param index
* @returns
*/
worker(index: number) {
return new EmberCheckboxInputPo(`.sortable-table .main-row:nth-of-type(${ index }) td:nth-of-type(8)`);
}
}
9 changes: 7 additions & 2 deletions cypress/e2e/po/components/ember/ember-input.po.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@ export default class EmberInputPo extends EmberComponentPo {
/**
* Type value in the input
* @param value Value to be typed
* @param secret Pass in true to hide sensitive data from logs
* @returns
*/
set(value: string): Cypress.Chainable {
set(value: string, secret?: boolean): Cypress.Chainable {
this.input().should('be.visible');
this.input().focus();
this.input().clear();

return this.input().type(value);
if (secret) {
return this.input().type(value, { log: false });
} else {
return this.input().type(value);
}
}

clear() {
Expand Down
12 changes: 12 additions & 0 deletions cypress/e2e/po/components/ember/ember-kubernetes-options.po.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import EmberComponentPo from '@/cypress/e2e/po/components/ember/ember-component.po';
import EmberSelectPo from '@/cypress/e2e/po/components/ember/ember-select.po';

export default class EmberKubernetesOptionsPo extends EmberComponentPo {
kubernetesVersion() {
return new EmberSelectPo(`[data-testid="__content"]:nth-of-type(2) div.ember-view:nth-child(1) div select`);
}

networkProvider() {
return new EmberSelectPo(`[data-testid="__content"]:nth-of-type(2) .ember-view .row:nth-child(1) select`);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import EmberInputPo from '@/cypress/e2e/po/components/ember/ember-input.po';
import EmberSelectPo from '@/cypress/e2e/po/components/ember/ember-select.po';
import EmberRadioInputPo from '@/cypress/e2e/po/components/ember/ember-radio.po';
import EmberModalAddNodeTemplateGenericPo from '@/cypress/e2e/po/components/ember/ember-modal-add-node-template_generic.po';
export default class EmberModalAddNodeTemplateAwsPo extends EmberModalAddNodeTemplateGenericPo {
accessKey(): EmberInputPo {
return new EmberInputPo('.horizontal-form #amazonec2-accessKey');
}

secretKey(): EmberInputPo {
return new EmberInputPo('.horizontal-form #amazonec2-secretKey');
}

defaultRegion(): EmberSelectPo {
return new EmberSelectPo('.horizontal-form select.form-control');
}

selectNetwork(index: number): EmberRadioInputPo {
return new EmberRadioInputPo(`div:nth-of-type(3) .accordion-content:nth-of-type(2) .radio:nth-of-type(${ index }) input`);
}

selectSecurityGroups(index: number): EmberRadioInputPo {
return new EmberRadioInputPo(`div:nth-of-type(4) .accordion-content:nth-of-type(2) .radio:nth-of-type(${ index }) input`);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import EmberAccordionPo from '@/cypress/e2e/po/components/ember/ember-accordion.po';
import EmberModalPo from '@/cypress/e2e/po/components/ember/ember-modal.po';
import EmberInputPo from '@/cypress/e2e/po/components/ember/ember-input.po';

export default class EmberModalAddNodeTemplatePo extends EmberModalPo {
export default class EmberModalAddNodeTemplateGenericPo extends EmberModalPo {
serviceProviderOptions(label: string) {
return this.self().contains('.nav-box-item', new RegExp(` ${ label } `));
}
Expand All @@ -11,16 +10,8 @@ export default class EmberModalAddNodeTemplatePo extends EmberModalPo {
return this.self().contains('.btn', label, { timeout: 10000 });
}

accordion() {
return new EmberAccordionPo('');
}

checkOption(value: string) {
return this.self().find('.form-control').contains(value).click();
}

templateName(): EmberInputPo {
return new EmberInputPo('[data-testid="form-name-description__name"]');
return new EmberInputPo('.modal-container [data-testid="form-name-description__name"]');
}

create() {
Expand Down
19 changes: 19 additions & 0 deletions cypress/e2e/po/components/ember/ember-radio.po.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import EmberComponentPo from '@/cypress/e2e/po/components/ember/ember-component.po';

export default class EmberRadioInputPo extends EmberComponentPo {
/**
* Click on the Radio input button
* @returns
*/
set(): Cypress.Chainable {
return this.input().click({ force: true });
}

/**
* Return the Radio input button from a given container
* @returns
*/
private input(): Cypress.Chainable {
return this.self();
}
}
8 changes: 8 additions & 0 deletions cypress/e2e/po/components/ember/ember-select.po.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import EmberComponentPo from '@/cypress/e2e/po/components/ember/ember-component.po';

export default class EmberSelectPo extends EmberComponentPo {
/**
* Get dropdown options (in <select>)
* @returns
*/
getOptions(): Cypress.Chainable {
return this.self().find('option');
}

getMenuItem(label: string, index = 0) {
return this.self().eq(index).contains(label);
}
Expand Down
2 changes: 1 addition & 1 deletion cypress/e2e/po/components/sortable-table.po.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export default class SortableTablePo extends ComponentPo {
//

groupElementWithName(name: string) {
return this.self().contains('tr.group-row div', name);
return this.self().contains('tr.group-row', name);
}

rowElements(options?: any) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import ClusterManagerDetailPagePo from '@/cypress/e2e/po/detail/provisioning.cattle.io.cluster/cluster-detail.po';
import ResourceDetailPo from '@/cypress/e2e/po/edit/resource-detail.po';

/**
* Detail page for an RKE1 amazon EC2 cluster
*/
export default class ClusterManagerDetailRke1AmazonEc2PagePo extends ClusterManagerDetailPagePo {
resourceDetail() {
return new ResourceDetailPo(this.self());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import EmberAccordionPo from '@/cypress/e2e/po/components/ember/ember-accordion.
import EmberFormMembersPo from '@/cypress/e2e/po/components/ember/ember-form-members.po';
import EmberCheckboxInputPo from '@/cypress/e2e/po/components/ember/ember-checkbox-input.po';
import EmberSelectPo from '@/cypress/e2e/po/components/ember/ember-select.po';
import EmberModalAddNodeTemplateAwsPo from '@/cypress/e2e/po/components/ember/ember-modal-add-node-template-aws.po';
import EmberFormNodePoolsPo from '@/cypress/e2e/po/components/ember/ember-form-node-pools.po';
import EmberKubernetesOptionsPo from '@/cypress/e2e/po/components/ember/ember-kubernetes-options.po';

/**
* Create page for an RKE1 amazonec2 cluster
Expand All @@ -27,6 +30,22 @@ export default class ClusterManagerCreateRke1Amazonec2PagePo extends ClusterMana
return new EmberInputPo('[data-testid="form-name-description__name"]');
}

nodePoolTable(): EmberFormNodePoolsPo {
return new EmberFormNodePoolsPo('div.ember-view');
}

kubernetesOptions(): EmberKubernetesOptionsPo {
return new EmberKubernetesOptionsPo('div.ember-view');
}

addNodeTemplate() {
return cy.iFrame().find('button').contains('Add Node Template').click();
}

addNodeTemplateForm(): EmberModalAddNodeTemplateAwsPo {
return new EmberModalAddNodeTemplateAwsPo();
}

memberRoles(): EmberAccordionPo {
return new EmberAccordionPo('cru-cluster__members');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ export default abstract class ClusterManagerCreateRKE1PagePo extends ClusterMana
throw new Error('RKE2 only');
}

createRKE1(): CypressChainable {
return cy.iFrame().find('[data-testid="save-cancel-rke1"] button').contains('Create').click();
}

saveRKE1(): CypressChainable {
return cy.iFrame().find('[data-testid="save-cancel-rke1"] button').contains('Save').click();
}

next() {
return cy.iFrame().find('button').contains('Next').click();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default class ClusterManagerListPagePo extends PagePo {
}

list(): ProvClusterListPo {
return new ProvClusterListPo(this.self().find('[data-testid="cluster-list"]'));
return new ProvClusterListPo('[data-testid="cluster-list"]');
}

/**
Expand Down
6 changes: 3 additions & 3 deletions cypress/e2e/po/pages/cluster-manager/node-templates.po.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import PagePo from '@/cypress/e2e/po/pages/page.po';
import EmberSortableTablePo from '@/cypress/e2e/po/components/ember/ember-sortable-table.po';
import EmberModalAddNodeTemplatePo from '@/cypress/e2e/po/components/ember/ember-modal-add-node-template.po';
import ProductNavPo from '@/cypress/e2e/po/side-bars/product-side-nav.po';
import BurgerMenuPo from '@/cypress/e2e/po/side-bars/burger-side-menu.po';
import EmberModalAddNodeTemplateAwsPo from '@/cypress/e2e/po/components/ember/ember-modal-add-node-template-aws.po';

export default class NodeTemplatesPagePo extends PagePo {
private static createPath(clusterId: string) {
Expand All @@ -25,8 +25,8 @@ export default class NodeTemplatesPagePo extends PagePo {
sideNav.navToSideMenuEntryByLabel('Node Templates');
}

addNodeTemplateModal(): EmberModalAddNodeTemplatePo {
return new EmberModalAddNodeTemplatePo();
addNodeTemplateModal(): EmberModalAddNodeTemplateAwsPo {
return new EmberModalAddNodeTemplateAwsPo();
}

list(): EmberSortableTablePo {
Expand Down
Loading
Loading