web/satellite, testsuite/satellite/ui: removed onb CLI flow's Generate AG step and updated tests

Removed Generate access grant step.
Updated according test and added Back button click test logic.

Change-Id: I736eb4ecb4c3a2437c78af3f42da160b0f147d26
This commit is contained in:
Vitalii Shpital 2021-09-23 20:00:40 +03:00
parent 7d90770f8e
commit 9da3de1a89
8 changed files with 82 additions and 106 deletions

View File

@ -42,56 +42,128 @@ func TestOnboardingWizardCLIFlow(t *testing.T) {
page.Keyboard.MustPress(input.Enter)
// Testing onboarding workflow uplinkCLI method
// Welcome screen
page.MustElementX("(//span[text()=\"Continue in cli\"])").MustClick()
page.MustWaitNavigation()
// API key generated screen
apiKeyGeneratedTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, apiKeyGeneratedTitle, "API Key Generated")
satelliteAddress := page.MustElement("[aria-roledescription=satellite-address]").MustText()
require.NotEmpty(t, satelliteAddress)
apiKey := page.MustElement("[aria-roledescription=api-key]").MustText()
require.NotEmpty(t, apiKey)
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
welcomeTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, welcomeTitle, "Welcome")
page.MustElementX("(//span[text()=\"Continue in cli\"])").MustClick()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// API key generated screen
cliInstallTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliInstallTitle, "Install Uplink CLI")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
apiKeyGeneratedTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, apiKeyGeneratedTitle1, "API Key Generated")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// CLI setup screen
cliSetupTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliSetupTitle, "CLI Setup")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
cliInstallTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliInstallTitle1, "Install Uplink CLI")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
generateAccessGrantTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, generateAccessGrantTitle, "Generate an Access Grant")
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// Create bucket screen
createBucketTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, createBucketTitle, "Create a bucket")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
cliSetupTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliSetupTitle1, "CLI Setup")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// Ready to upload screen
readyToUploadTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, readyToUploadTitle, "Ready to upload")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
createBucketTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, createBucketTitle1, "Create a bucket")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// List a bucket screen
listTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, listTitle, "Listing a bucket")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
readyToUploadTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, readyToUploadTitle1, "Ready to upload")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// Download screen
downloadTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, downloadTitle, "Download")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
listTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, listTitle1, "Listing a bucket")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// Share link screen
shareLinkTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, shareLinkTitle, "Share a link")
page.MustElementX("(//span[text()=\"< Back\"])").MustClick()
page.MustWaitNavigation()
downloadTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, downloadTitle1, "Download")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
page.MustWaitNavigation()
// Success screen
successTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, successTitle, "Wonderful")
page.MustElementX("(//span[text()=\"Finish\"])").MustClick()
page.MustWaitNavigation()
dashboardTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, dashboardTitle, "My First Project Dashboard")
page.MustNavigateBack()
successTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, successTitle1, "Wonderful")
page.MustElementX("(//button[contains(., 'Upgrade')])").MustClick()
// Upgrade to pro account modal
addPMModalTitle := page.MustElement("[aria-roledescription=modal-title]").MustText()
require.Contains(t, addPMModalTitle, "Upgrade to Pro Account")
page.MustElement(".close-cross-container").MustClick()
dashboardTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, dashboardTitle, "My First Project Dashboard")
// Dashboard screen
dashboardTitle1 := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, dashboardTitle1, "My First Project Dashboard")
})
}

View File

@ -42,7 +42,7 @@ func TestOnboardingWizardBrowser(t *testing.T) {
page.Keyboard.MustPress(input.Enter)
// testing onboarding workflow browser
page.MustElementX("(//span[text()=\"CONTINUE IN WEB\"])").MustClick()
page.MustElementX("(//span[text()=\"Continue in web\"])").MustClick()
objectBrowserWarning := page.MustElement("[aria-roledescription=sub-title]").MustText()
require.Contains(t, objectBrowserWarning, "The object browser uses server side encryption.")
page.MustElementX("(//span[text()=\"Continue\"])").MustClick()

View File

@ -5,7 +5,7 @@
<div class="overview-area">
<div class="overview-area__header">
<WelcomeLeft />
<h1 class="overview-area__header__title">Welcome</h1>
<h1 class="overview-area__header__title" aria-roledescription="title">Welcome</h1>
<WelcomeRight />
</div>
<p class="overview-area__subtitle">Let's get you started using Storj DCS</p>

View File

@ -67,7 +67,7 @@ export default class CLISetup extends Vue {
* Holds on next button click logic.
*/
public async onNextClick(): Promise<void> {
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.GenerateAG)).path);
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.CreateBucket)).path);
}
}
</script>

View File

@ -55,7 +55,7 @@ export default class CreateBucket extends Vue {
* Holds on back button click logic.
*/
public async onBackClick(): Promise<void> {
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.GenerateAG)).path);
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.CLISetup)).path);
}
/**

View File

@ -1,89 +0,0 @@
// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
<template>
<CLIFlowContainer
:on-back-click="onBackClick"
:on-next-click="onNextClick"
title="Generate an Access Grant"
>
<template #icon>
<Icon />
</template>
<template #content class="generate-ag">
<p class="generate-ag__msg">
Generate an Access Grant by running
<b class="generate-ag__msg__bold">uplink share</b>
with no restrictions. If you chose an access name, you'll need to specify it in the following command as
<b class="generate-ag__msg__bold">--access=name</b>
</p>
<OSContainer>
<template #windows>
<TabWithCopy value="./uplink.exe share --readonly=false" />
</template>
<template #linux>
<TabWithCopy value="uplink share --readonly=false" />
</template>
<template #macos>
<TabWithCopy value="uplink share --readonly=false" />
</template>
</OSContainer>
<p class="generate-ag__msg">Your Access Grant should have been output.</p>
</template>
</CLIFlowContainer>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import { RouteConfig } from "@/router";
import CLIFlowContainer from "@/components/onboardingTour/steps/common/CLIFlowContainer.vue";
import OSContainer from "@/components/onboardingTour/steps/common/OSContainer.vue";
import TabWithCopy from "@/components/onboardingTour/steps/common/TabWithCopy.vue";
import Icon from '@/../static/images/onboardingTour/generateAGStep.svg';
// @vue/component
@Component({
components: {
CLIFlowContainer,
Icon,
OSContainer,
TabWithCopy,
}
})
export default class GenerateAG extends Vue {
/**
* Holds on back button click logic.
*/
public async onBackClick(): Promise<void> {
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.CLISetup)).path);
}
/**
* Holds on next button click logic.
*/
public async onNextClick(): Promise<void> {
await this.$router.push(RouteConfig.OnboardingTour.with(RouteConfig.OnbCLIStep.with(RouteConfig.CreateBucket)).path);
}
}
</script>
<style scoped lang="scss">
.generate-ag {
font-family: 'font_regular', sans-serif;
&__msg {
font-size: 18px;
line-height: 32px;
letter-spacing: 0.15px;
color: #4e4b66;
&__bold {
font-family: 'font_medium', sans-serif;
white-space: nowrap;
}
}
}
</style>

View File

@ -38,7 +38,6 @@ import ProjectMembersArea from '@/components/team/ProjectMembersArea.vue';
import CLIInstall from "@/components/onboardingTour/steps/cliFlow/CLIInstall.vue";
import APIKey from "@/components/onboardingTour/steps/cliFlow/APIKey.vue";
import CLISetup from "@/components/onboardingTour/steps/cliFlow/CLISetup.vue";
import GenerateAG from "@/components/onboardingTour/steps/cliFlow/GenerateAG.vue";
import CreateBucket from "@/components/onboardingTour/steps/cliFlow/CreateBucket.vue";
import UploadObject from "@/components/onboardingTour/steps/cliFlow/UploadObject.vue";
import ListObject from "@/components/onboardingTour/steps/cliFlow/ListObject.vue";
@ -102,7 +101,6 @@ export abstract class RouteConfig {
public static APIKey = new NavigationLink('api-key', 'Onboarding API Key');
public static CLIInstall = new NavigationLink('cli-install', 'Onboarding CLI Install');
public static CLISetup = new NavigationLink('cli-setup', 'Onboarding CLI Setup');
public static GenerateAG = new NavigationLink('generate-ag', 'Onboarding Generate AG');
public static CreateBucket = new NavigationLink('create-bucket', 'Onboarding Create Bucket');
public static UploadObject = new NavigationLink('upload-object', 'Onboarding Upload Object');
public static ListObject = new NavigationLink('list-object', 'Onboarding List Object');
@ -300,11 +298,6 @@ export const router = new Router({
name: RouteConfig.CLISetup.name,
component: CLISetup,
},
{
path: RouteConfig.GenerateAG.path,
name: RouteConfig.GenerateAG.name,
component: GenerateAG,
},
{
path: RouteConfig.CreateBucket.path,
name: RouteConfig.CreateBucket.name,

View File

@ -8,7 +8,7 @@ exports[`OverviewStep.vue renders correctly 1`] = `
<path d="M16.7741 6.11976L22.209 11.5547L27.6439 6.11976L22.209 0.68483L16.7741 6.11976Z" fill="#FF458B"></path>
<path d="M0 16.5204L0 21.4116H4.89119V16.5204H0Z" fill="#0149FF"></path>
</svg>
<h1 class="overview-area__header__title">Welcome</h1> <svg width="77" height="35" viewBox="0 0 77 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<h1 aria-roledescription="title" class="overview-area__header__title">Welcome</h1> <svg width="77" height="35" viewBox="0 0 77 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M18.7226 18.9985L9.8291 10.105L0.935606 18.9985L9.8291 27.892L18.7226 18.9985Z" fill="#FFC600"></path>
<path d="M40.8472 8.51281L40.8472 0.82666L33.161 0.826659L33.161 8.51281L40.8472 8.51281Z" fill="#00E567"></path>