Skip to content

Commit

Permalink
feat(ecs): add cypress tests for the ecs provider (#8632)
Browse files Browse the repository at this point in the history
* feat(ecs): add cypress tests for the ecs provider

* Add test Ids

Co-authored-by: allisaurus <34254888+allisaurus@users.noreply.github.com>
  • Loading branch information
piradeepk and allisaurus committed Oct 9, 2020
1 parent 5848c28 commit 382591b
Show file tree
Hide file tree
Showing 25 changed files with 561 additions and 54 deletions.
Expand Up @@ -132,7 +132,9 @@ export class StageArtifactSelector extends React.Component<IStageArtifactSelecto

return (
<>
<div className="sp-margin-m-bottom">{renderLabel ? renderLabel(select) : select}</div>
<div className="sp-margin-m-bottom" data-test-id="Stage.artifactSelector">
{renderLabel ? renderLabel(select) : select}
</div>
{!!artifact && (
<ArtifactEditor
pipeline={pipeline}
Expand Down
Expand Up @@ -135,6 +135,7 @@ <h3>
<div class="row main-footer fixed-footer horizontal">
<div class="fixed-footer-button">
<button
data-test-id="Pipeline.revertChanges"
is-visible="!pipeline.locked && viewState.isDirty && !viewState.saving"
class="btn btn-default"
analytics-on="click"
Expand Down
Expand Up @@ -85,7 +85,7 @@
<tr>
<td colspan="10">
<button class="btn btn-block btn-sm add-new" ng-click="deployStageCtrl.addCluster()">
<span class="glyphicon glyphicon-plus-sign"></span> Add server group
<span class="glyphicon glyphicon-plus-sign" data-test-id="Deploy.addServerGroup"></span> Add server group
</button>
</td>
</tr>
Expand Down
Expand Up @@ -63,9 +63,8 @@ export class Container extends React.Component<IContainerProps, IContainerState>
};

this.state.targetGroupMappings.forEach(targetGroupMapping => {
targetGroupMapping.containerName = "";
targetGroupMapping.containerName = '';
});

}

public componentDidMount() {
Expand Down Expand Up @@ -170,7 +169,11 @@ export class Container extends React.Component<IContainerProps, IContainerState>
});

const newTargetGroupMapping = this.state.targetGroupsAvailable.length ? (
<button className="btn btn-block btn-sm add-new" onClick={this.pushTargetGroupMapping}>
<button
className="btn btn-block btn-sm add-new"
data-test-id="ContainerInputs.targetGroupAdd"
onClick={this.pushTargetGroupMapping}
>
<span className="glyphicon glyphicon-plus-sign" />
Add New Target Group Mapping
</button>
Expand All @@ -187,7 +190,7 @@ export class Container extends React.Component<IContainerProps, IContainerState>
const targetGroupInputs = this.state.targetGroupMappings.map(function(mapping, index) {
return (
<tr key={index}>
<td>
<td data-test-id="ContainerInputs.targetGroup">
<TetheredSelect
placeholder="Select a target group to use..."
options={targetGroupsAvailable}
Expand All @@ -198,6 +201,7 @@ export class Container extends React.Component<IContainerProps, IContainerState>
</td>
<td>
<input
data-test-id="ContainerInputs.targetGroupPort"
type="number"
className="form-control input-sm no-spel"
required={true}
Expand All @@ -207,7 +211,11 @@ export class Container extends React.Component<IContainerProps, IContainerState>
</td>
<td>
<div className="form-control-static">
<a className="btn-link sm-label" onClick={() => removeTargetGroupMapping(index)}>
<a
className="btn-link sm-label"
data-test-id="ContainerInputs.targetGroupRemove"
onClick={() => removeTargetGroupMapping(index)}
>
<span className="glyphicon glyphicon-trash" />
<span className="sr-only">Remove</span>
</a>
Expand All @@ -224,7 +232,7 @@ export class Container extends React.Component<IContainerProps, IContainerState>
<b>Container Image</b>
<HelpField id="ecs.containerMappingImage" />
</div>
<div className="col-md-9">
<div className="col-md-9" data-test-id="ContainerInputs.containerImage">
<TetheredSelect
placeholder="Select an image to use..."
options={dockerImageOptions}
Expand All @@ -243,6 +251,7 @@ export class Container extends React.Component<IContainerProps, IContainerState>
</div>
<div className="col-md-9" style={{ width: '100px' }}>
<input
data-test-id="ContainerInputs.computeUnits"
type="number"
className="form-control input-sm no-spel"
required={false}
Expand All @@ -258,6 +267,7 @@ export class Container extends React.Component<IContainerProps, IContainerState>
</div>
<div className="col-md-9" style={{ width: '100px' }}>
<input
data-test-id="ContainerInputs.reservedMemory"
type="number"
className="form-control input-sm no-spel"
required={false}
Expand Down
Expand Up @@ -4,7 +4,7 @@
Launch Type
<help-field key="ecs.launchtype"></help-field>
</div>
<div class="col-md-3">
<div class="col-md-3" data-test-id="ServerGroup.launchType">
<ui-select ng-model="$ctrl.command.launchType" class="form-control input-sm">
<ui-select-match placeholder="Select...">{{ $select.selected }}</ui-select-match>
<ui-select-choices repeat="launchType in $ctrl.command.backingData.launchTypes | filter: $select.search">
Expand Down
Expand Up @@ -39,6 +39,7 @@
No ECS clusters found in the selected account/region
</div>
<ui-select
data-test-id="ServerGroup.clusterName"
ng-model="command.ecsClusterName"
ng-if="command.backingData.filtered.ecsClusters.length"
class="form-control input-sm"
Expand All @@ -61,6 +62,7 @@
</div>
<div class="col-md-7">
<input
data-test-id="ServerGroup.stack"
type="text"
class="form-control input-sm no-spel"
ng-pattern="basicSettingsCtrl.stackPattern"
Expand All @@ -81,6 +83,7 @@
</div>
<div class="col-md-7">
<input
data-test-id="ServerGroup.details"
type="text"
class="form-control input-sm no-spel"
ng-pattern="basicSettingsCtrl.detailPattern"
Expand Down
Expand Up @@ -4,7 +4,7 @@
<b>Log driver (Optional)</b> <help-field key="ecs.logDriver"></help-field>
</div>
<div class="col-md-7">
<ui-select ng-model="$ctrl.command.logDriver" class="form-control input-sm">
<ui-select ng-model="$ctrl.command.logDriver" class="form-control input-sm" data-test-id="Logging.logDriver">
<ui-select-match>{{ $select.selected }}</ui-select-match>
<ui-select-choices
repeat="item in ['None', 'awslogs', 'fluentd', 'gelf', 'journald', 'json-file', 'logentries', 'splunk', 'sumologic', 'syslog'] | filter: $select.search"
Expand Down
Expand Up @@ -4,7 +4,7 @@

<div class="form-group">
<div class="col-md-4 sm-label-right"><b>Network mode</b> <help-field key="ecs.networkMode"></help-field></div>
<div class="col-md-6">
<div class="col-md-6" data-test-id="Networking.networkMode">
<ui-select ng-model="$ctrl.command.networkMode" class="form-control input-sm">
<ui-select-match>{{ $select.selected }}</ui-select-match>
<ui-select-choices repeat="item in ['bridge', 'host', 'awsvpc', 'none', 'default']">
Expand All @@ -24,6 +24,7 @@

<div class="col-md-6" ng-if="$ctrl.command.backingData.filtered.subnetTypes.length">
<ui-select
data-test-id="Networking.subnetType"
ng-model="$ctrl.command.subnetType"
class="form-control input-sm"
required
Expand Down Expand Up @@ -73,6 +74,7 @@
<div class="col-md-1 radio">
<label>
<input
data-test-id="Networking.associatePublicIpAddressTrue"
type="radio"
ng-model="$ctrl.command.associatePublicIpAddress"
ng-value="true"
Expand All @@ -84,6 +86,7 @@
<div class="col-md-1 radio">
<label>
<input
data-test-id="Networking.associatePublicIpAddressFalse"
type="radio"
ng-model="$ctrl.command.associatePublicIpAddress"
ng-value="false"
Expand Down
Expand Up @@ -29,9 +29,9 @@ <h3 us-spinner="{radius:30, width:8, length: 16}"></h3>
<ng-include src="pages.logging"></ng-include>
</v2-wizard-page>
</div>
<v2-wizard-page key="serviceDiscovery" label="Service Discovery" done="true">
<ng-include ng-if="!command.useTaskDefinitionArtifact" src="pages.serviceDiscovery" ></ng-include>
<ng-include ng-if="command.useTaskDefinitionArtifact" src="pages.serviceDiscovery" ></ng-include>
<v2-wizard-page key="serviceDiscovery" label="Service Discovery" done="true">
<ng-include ng-if="!command.useTaskDefinitionArtifact" src="pages.serviceDiscovery"></ng-include>
<ng-include ng-if="command.useTaskDefinitionArtifact" src="pages.serviceDiscovery"></ng-include>
</v2-wizard-page>
<v2-wizard-page key="advanced" label="Advanced Settings" mark-complete-on-view="false" done="true">
<ng-include src="pages.advancedSettings"></ng-include>
Expand All @@ -42,6 +42,7 @@ <h3 us-spinner="{radius:30, width:8, length: 16}"></h3>
Cancel
</button>
<submit-button
data-test-id="ServerGroupWizard.submitButton"
ng-if="ctrl.showSubmitButton()"
is-disabled="!ctrl.isValid() || taskMonitor.submitting"
label="command.viewState.submitButtonLabel"
Expand Down
Expand Up @@ -224,14 +224,15 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
<tr key={index}>
<td>
<input
data-test-id="Artifacts.containerName"
className="form-control input-sm"
required={true}
placeholder="enter container name..."
value={mapping.containerName.toString()}
onChange={e => updateContainerMappingName(index, e.target.value)}
/>
</td>
<td>
<td data-test-id="Artifacts.containerImage">
<TetheredSelect
placeholder="Select an image to use..."
options={dockerImageOptions}
Expand All @@ -244,7 +245,11 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
</td>
<td>
<div className="form-control-static">
<a className="btn-link sm-label" onClick={() => removeMapping(index)}>
<a
className="btn-link sm-label"
data-test-id="Artifacts.containerRemove"
onClick={() => removeMapping(index)}
>
<span className="glyphicon glyphicon-trash" />
<span className="sr-only">Remove</span>
</a>
Expand All @@ -259,14 +264,15 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
<tr key={index}>
<td>
<input
data-test-id="Artifacts.targetGroupContainer"
className="form-control input-sm"
required={true}
placeholder="Enter a container name ..."
value={mapping.containerName.toString()}
onChange={e => updateTargetGroupMappingContainer(index, e.target.value)}
/>
</td>
<td>
<td data-test-id="Artifacts.targetGroup">
<TetheredSelect
placeholder="Select a target group to use..."
options={targetGroupsAvailable}
Expand All @@ -277,6 +283,7 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
</td>
<td>
<input
data-test-id="Artifacts.targetGroupPort"
type="number"
className="form-control input-sm no-spel"
required={true}
Expand All @@ -286,7 +293,11 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
</td>
<td>
<div className="form-control-static">
<a className="btn-link sm-label" onClick={() => removeTargetGroupMapping(index)}>
<a
className="btn-link sm-label"
data-test-id="Artifacts.targetGroupRemove"
onClick={() => removeTargetGroupMapping(index)}
>
<span className="glyphicon glyphicon-trash" />
<span className="sr-only">Remove</span>
</a>
Expand All @@ -297,7 +308,11 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
});

const newTargetGroupMapping = this.state.targetGroupsAvailable.length ? (
<button className="btn btn-block btn-sm add-new" onClick={this.pushTargetGroupMapping}>
<button
className="btn btn-block btn-sm add-new"
data-test-id="Artifacts.targetGroupAdd"
onClick={this.pushTargetGroupMapping}
>
<span className="glyphicon glyphicon-plus-sign" />
Add New Target Group Mapping
</button>
Expand Down Expand Up @@ -348,7 +363,11 @@ export class TaskDefinition extends React.Component<ITaskDefinitionProps, ITaskD
<tfoot>
<tr>
<td colSpan={3}>
<button className="btn btn-block btn-sm add-new" onClick={this.pushMapping}>
<button
className="btn btn-block btn-sm add-new"
data-test-id="Artifacts.containerAdd"
onClick={this.pushMapping}
>
<span className="glyphicon glyphicon-plus-sign" />
Add New Container Mapping
</button>
Expand Down
Expand Up @@ -10,6 +10,7 @@
<div class="col-md-2 radio">
<label>
<input
data-test-id="ServerGroup.useInputs"
type="radio"
ng-model="command.useTaskDefinitionArtifact"
ng-value="false"
Expand All @@ -21,6 +22,7 @@
<div class="col-md-1 radio">
<label>
<input
data-test-id="ServerGroup.useArtifacts"
type="radio"
ng-model="command.useTaskDefinitionArtifact"
ng-value="true"
Expand Down
58 changes: 30 additions & 28 deletions test/functional/cypress/fixtures/default/credentials.expand.json
@@ -1,35 +1,37 @@
[
{
"accountType": "ecs-provider",
"challengeDestructiveActions": false,
"cloudProvider": "ecs",
"environment": "ecs-provider",
"name": "ecs-provider",
"name": "ecs-my-aws-devel-acct",
"accountId": "123456789012",
"type": "ecs",
"requiredGroupMembership": [],
"permissions": {},
"accountType": "ecs",
"environment": "my-aws-devel-acct",
"challengeDestructiveActions": false,
"primaryAccount": false,
"providerVersion": "v1",
"requiredGroupMembership": [],
"skin": "v1",
"type": "ecs",
"authorized": true,
"cacheThreads": 1,
"spinnakerKindMap": {
"configMap": "configs",
"cronJob": "serverGroups",
"daemonSet": "serverGroups",
"deployment": "serverGroupManagers",
"ingress": "loadBalancers",
"job": "serverGroups",
"networkPolicy": "securityGroups",
"persistentVolume": "configs",
"persistentVolumeClaim": "configs",
"pod": "instances",
"replicaSet": "serverGroups",
"secret": "configs",
"service": "loadBalancers",
"statefulSet": "serverGroups"
},
"namespaces": ["default"]
"cloudProvider": "ecs",
"regions": [
{
"availabilityZones": ["us-west-2a", "us-west-2b", "us-west-2c", "us-west-2d"],
"deprecated": false,
"name": "us-west-2",
"preferredZones": ["us-west-2a", "us-west-2b", "us-west-2c", "us-west-2d"]
}
],
"eddaEnabled": false,
"awsAccount": "my-aws-devel-acct",
"sessionName": "Spinnaker",
"front50Enabled": false,
"assumeRole": "role/SpinnakerManaged",
"enabled": true,
"defaultKeyPair": "my-aws-devel-acct-keypair",
"lifecycleHooks": [],
"discoveryEnabled": false,
"shieldEnabled": false,
"lambdaEnabled": false,
"allowPrivateThirdPartyImages": false,
"bastionEnabled": false,
"authorized": true
},
{
"accountType": "kubernetes-v2-provider",
Expand Down
3 changes: 3 additions & 0 deletions test/functional/cypress/fixtures/ecs/clusters/clusters.json
@@ -0,0 +1,3 @@
{
"ecs-my-aws-devel-acct": ["aws-prod-ecsdemo-v000", "aws-prod-fargatedemo-v000", "aws-prod-fargatedemo-v001"]
}

0 comments on commit 382591b

Please sign in to comment.