testsuite/ui/satellite: updated pnboarding CLI tests and improved selectors

Updated onb CLI flow test.
Updated tests to use aria-roledescription as selector.

Change-Id: I1442592e1938fbe730064977dc9b78266e403706
This commit is contained in:
Vitalii Shpital 2021-09-16 15:04:26 +03:00
parent 853a7536f6
commit 9153b221fd
23 changed files with 174 additions and 263 deletions

View File

@ -0,0 +1,97 @@
// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
package satellite
import (
"testing"
"github.com/go-rod/rod"
"github.com/go-rod/rod/lib/input"
"github.com/stretchr/testify/require"
"storj.io/common/testcontext"
"storj.io/storj/private/testplanet"
"storj.io/storj/testsuite/ui/uitest"
)
func TestOnboardingWizardCLIFlow(t *testing.T) {
uitest.Run(t, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet, browser *rod.Browser) {
signupPageURL := planet.Satellites[0].ConsoleURL() + "/signup"
fullName := "John Doe"
emailAddress := "test@email.com"
password := "qazwsx123"
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("[aria-roledescription=name]").MustInput(fullName)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.MustElement("[aria-roledescription=retype-password]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
// First time User log in
page.MustElement("[href=\"/login\"]").MustClick()
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.Keyboard.MustPress(input.Enter)
// Testing onboarding workflow uplinkCLI method
page.MustElementX("(//span[text()=\"CONTINUE IN CLI\"])").MustClick()
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()=\"Next >\"])").MustClick()
cliInstallTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliInstallTitle, "Install Uplink CLI")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
cliSetupTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, cliSetupTitle, "CLI Setup")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
generateAccessGrantTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, generateAccessGrantTitle, "Generate an Access Grant")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
createBucketTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, createBucketTitle, "Create a bucket")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
readyToUploadTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, readyToUploadTitle, "Ready to upload")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
listTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, listTitle, "Listing a bucket")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
downloadTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, downloadTitle, "Download")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
shareLinkTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, shareLinkTitle, "Share a link")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
successTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, successTitle, "Wonderful")
page.MustElementX("(//button[contains(., 'Upgrade')])").MustClick()
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")
})
}

View File

@ -1,98 +0,0 @@
// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
package satellite
import (
"testing"
"github.com/go-rod/rod"
"github.com/go-rod/rod/lib/input"
"github.com/stretchr/testify/require"
"storj.io/common/testcontext"
"storj.io/storj/private/testplanet"
"storj.io/storj/testsuite/ui/uitest"
)
func TestOnboardingWizardCLISkipPassphrase(t *testing.T) {
uitest.Run(t, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet, browser *rod.Browser) {
signupPageURL := planet.Satellites[0].ConsoleURL() + "/signup"
fullName := "John Doe"
emailAddress := "test@email.com"
password := "qazwsx123"
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
// First time User log in
page.MustElement("[href=\"/login\"]").MustClick()
page.MustElement("[type=text]").MustInput(emailAddress)
page.MustElement("[type=password]").MustInput(password)
page.Keyboard.MustPress(input.Enter)
// Testing onboarding workflow uplinkCLI method
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
encryptYourDataTitle := page.MustElement(".encrypt-container__title").MustText()
require.Contains(t, encryptYourDataTitle, "Encrypt your data")
page.MustElementX("(//*[@class=\"label\"])[3]").MustClick()
apiKeyGeneratedTitle := page.MustElement(".flow-container__title").MustText()
require.Contains(t, apiKeyGeneratedTitle, "API Key Generated")
satelliteAddress := page.MustElementX("(//*[@class=\"value-copy__value\"])[1]").MustText()
require.NotEmpty(t, satelliteAddress)
apiKey := page.MustElementX("(//*[@class=\"value-copy__value\"])[2]").MustText()
require.NotEmpty(t, apiKey)
page.MustElementX("(//*[@class=\"label\"])[4]").MustClick()
cliSetupTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, cliSetupTitle, "CLI Setup")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
generateAccessGrantTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, generateAccessGrantTitle, "Generate an Access Grant")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
createBucketTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, createBucketTitle, "Create a bucket")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
readyToUploadTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, readyToUploadTitle, "Ready to upload")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
listTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, listTitle, "Listing a bucket")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
downloadTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, downloadTitle, "Download")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
shareLinkTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, shareLinkTitle, "Share a link")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
successTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, successTitle, "Wonderful")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
addPMModalTitle := page.MustElement(".pm-area__add-modal__title").MustText()
require.Contains(t, addPMModalTitle, "Add a Payment Method")
page.MustElement(".close-cross-container").MustClick()
dashboardTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, dashboardTitle, "My First Project Dashboard")
})
}

View File

@ -1,98 +0,0 @@
// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
package satellite
import (
"testing"
"github.com/go-rod/rod"
"github.com/go-rod/rod/lib/input"
"github.com/stretchr/testify/require"
"storj.io/common/testcontext"
"storj.io/storj/private/testplanet"
"storj.io/storj/testsuite/ui/uitest"
)
func TestOnboardingWizardCLIWithPassphrase(t *testing.T) {
uitest.Run(t, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet, browser *rod.Browser) {
signupPageURL := planet.Satellites[0].ConsoleURL() + "/signup"
fullName := "John Doe"
emailAddress := "test@email.com"
password := "qazwsx123"
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
// First time User log in
page.MustElement("[href=\"/login\"]").MustClick()
page.MustElement("[type=text]").MustInput(emailAddress)
page.MustElement("[type=password]").MustInput(password)
page.Keyboard.MustPress(input.Enter)
// Testing onboarding workflow uplinkCLI method
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
encryptYourDataTitle := page.MustElement(".encrypt-container__title").MustText()
require.Contains(t, encryptYourDataTitle, "Encrypt your data")
mnemonic := page.MustElement(".encrypt-container__generate__value").MustText()
require.NotEmpty(t, mnemonic)
page.MustElementX("(//*[@class=\"label\"])[4]").MustClick()
accessGrantGeneratedTitle := page.MustElement(".flow-container__title").MustText()
require.Contains(t, accessGrantGeneratedTitle, "Access Grant Generated")
accessGrant := page.MustElementX("(//*[@class=\"value-copy__value\"])[1]").MustText()
require.NotEmpty(t, accessGrant)
page.MustElementX("(//*[@class=\"label\"])[3]").MustClick()
cliInstallTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, cliInstallTitle, "Install Uplink CLI")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
importAccessGrantTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, importAccessGrantTitle, "Import Your Access Grant")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
createBucketTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, createBucketTitle, "Create a bucket")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
readyToUploadTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, readyToUploadTitle, "Ready to upload")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
listTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, listTitle, "Listing a bucket")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
downloadTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, downloadTitle, "Download")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
shareLinkTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, shareLinkTitle, "Share a link")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
successTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, successTitle, "Wonderful")
page.MustElementX("(//*[@class=\"label\"])[2]").MustClick()
addPMModalTitle := page.MustElement(".pm-area__add-modal__title").MustText()
require.Contains(t, addPMModalTitle, "Add a Payment Method")
page.MustElement(".close-cross-container").MustClick()
dashboardTitle := page.MustElements("h1")[1].MustText()
require.Contains(t, dashboardTitle, "My First Project Dashboard")
})
}

View File

@ -24,40 +24,41 @@ func TestOnboardingWizardBrowser(t *testing.T) {
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// first time User signup
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement("[aria-roledescription=name]").MustInput(fullName)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.MustElement("[aria-roledescription=retype-password]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
confirmAccountEmailMessage := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
// first time user log in
page.MustElement("[href=\"/login\"]").MustClick()
page.MustElement("[type=text]").MustInput(emailAddress)
page.MustElement("[type=password]").MustInput(password)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.Keyboard.MustPress(input.Enter)
// testing onboarding workflow browser
page.MustElement(".label").MustClick()
objectBrowserWarning := page.MustElement(".warning-view__container").MustText()
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("(//*[@class=\"label\"])[2]").MustClick()
page.MustElementX("(//span[text()=\"Continue\"])").MustClick()
encryptionPassphraseWarningTitle := page.MustElement(".encrypt__container__save__title").MustText()
require.Contains(t, encryptionPassphraseWarningTitle, "Save your encryption passphrase")
customPassphrase := page.MustElement(".encrypt__container__header__row__right__enter")
encryptionPassphraseWarningTitle := page.MustElement("[aria-roledescription=warning-title]").MustText()
require.Contains(t, encryptionPassphraseWarningTitle, "The object browser uses server side encryption.")
customPassphrase := page.MustElement("[aria-roledescription=enter-passphrase-label]")
customPassphraseLabel := customPassphrase.MustText()
require.Contains(t, customPassphraseLabel, "Enter Your Own Passphrase")
customPassphrase.MustClick()
page.MustElement("[type=text]").MustInput("password123")
page.MustElement(".label").MustClick()
page.MustElement("[aria-roledescription=passphrase]").MustInput("password123")
page.MustElementX("(//span[text()=\"Next >\"])").MustClick()
// Buckets Page
bucketsTitle := page.MustElement(".buckets-view__title-area").MustText()
bucketsTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, bucketsTitle, "Buckets")
})
}

View File

@ -24,27 +24,26 @@ func TestSkipOnboardingWizard(t *testing.T) {
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement("[aria-roledescription=name]").MustInput(fullName)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.MustElement("[aria-roledescription=retype-password]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
confirmAccountEmailMessage := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
// Login as first time User
page.MustElement("[href=\"/login\"]").MustClick()
page.MustElement("[type=text]").MustInput(emailAddress)
page.MustElement("[type=password]").MustInput(password)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.Keyboard.MustPress(input.Enter)
// Checking out skip of onboarding process
page.MustElement(".overview-area__skip-button").MustClick()
dashboardTitle := page.MustElement(".dashboard-area__header-wrapper__title").MustText()
page.MustElement("[href=\"/project-dashboard\"]").MustClick()
dashboardTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, dashboardTitle, "Dashboard")
})
}

View File

@ -28,16 +28,16 @@ func TestBusinessUserCanSignUp(t *testing.T) {
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("li:nth-of-type(2)").MustClick()
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Acme Corp.\"]").MustInput(companyName)
page.MustElement("[placeholder=\"Position Title\"]").MustInput(positionTitle)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement("[aria-roledescription=professional-label]").MustClick()
page.MustElement("[aria-roledescription=name]").MustInput(fullName)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=company-name]").MustInput(companyName)
page.MustElement("[aria-roledescription=position]").MustInput(positionTitle)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.MustElement("[aria-roledescription=retype-password]").MustInput(password)
page.MustElementX("(//*[@class=\"checkmark\"])[2]").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
confirmAccountEmailMessage := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
})
}

View File

@ -23,14 +23,15 @@ func TestPersonalUserCanSignUp(t *testing.T) {
password := "qazwsx123"
page := browser.MustPage(signupPageURL)
page.MustSetViewport(1350, 600, 1, false)
// First time User signup
page.MustElement("[placeholder=\"Enter Full Name\"]").MustInput(fullName)
page.MustElement("[placeholder=\"example@email.com\"]").MustInput(emailAddress)
page.MustElement("[placeholder=\"Enter Password\"]").MustInput(password)
page.MustElement("[placeholder=\"Retype Password\"]").MustInput(password)
page.MustElement("[aria-roledescription=name]").MustInput(fullName)
page.MustElement("[aria-roledescription=email]").MustInput(emailAddress)
page.MustElement("[aria-roledescription=password]").MustInput(password)
page.MustElement("[aria-roledescription=retype-password]").MustInput(password)
page.MustElement(".checkmark").MustClick()
page.Keyboard.MustPress(input.Enter)
confirmAccountEmailMessage := page.MustElement(".register-success-area__form-container__title").MustText()
confirmAccountEmailMessage := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, confirmAccountEmailMessage, "You're almost there!")
})
}

View File

@ -24,11 +24,11 @@ func TestLoginToAccount(t *testing.T) {
page := browser.Timeout(10 * time.Second).MustPage(loginPageURL)
page.MustSetViewport(1350, 600, 1, false)
page.MustElement("[type=text]").MustInput(user.Email)
page.MustElement("[type=password]").MustInput(user.Password)
page.MustElement("[aria-roledescription=email]").MustInput(user.Email)
page.MustElement("[aria-roledescription=password]").MustInput(user.Password)
page.Keyboard.MustPress(input.Enter)
dashboardTitle := page.MustElement(".dashboard-area__header-wrapper__title").MustText()
dashboardTitle := page.MustElement("[aria-roledescription=title]").MustText()
require.Contains(t, dashboardTitle, "Dashboard")
})
}

View File

@ -5,7 +5,7 @@
<div class="pm-area">
<div v-if="isAddModal" class="pm-area__add-modal">
<div class="pm-area__add-modal__top">
<h1 class="pm-area__add-modal__top__title">Upgrade to Pro Account</h1>
<h1 class="pm-area__add-modal__top__title" aria-roledescription="modal-title">Upgrade to Pro Account</h1>
<div class="pm-area__add-modal__top__header">
<p class="pm-area__add-modal__top__header__sub-title">Add Payment Method</p>
<div class="pm-area__add-modal__top__header__choices">

View File

@ -14,7 +14,9 @@
<div class="encrypt-container__header__row">
<p class="encrypt-container__header__row__gen" :class="{ active: isGenerate }" @click="setToGenerate">Generate Phrase</p>
<div class="encrypt-container__header__row__right">
<p class="encrypt-container__header__row__right__enter" :class="{ active: !isGenerate }" @click="setToEnter">Enter Your Own Passphrase</p>
<p class="encrypt-container__header__row__right__enter" :class="{ active: !isGenerate }" aria-roledescription="enter-passphrase-label" @click="setToEnter">
Enter Your Own Passphrase
</p>
<VInfo class="encrypt-container__header__row__right__info-button">
<template #icon>
<InfoIcon class="encrypt-container__header__row__right__info-button__image" />
@ -44,12 +46,13 @@
<HeaderlessInput
placeholder="Enter a passphrase here..."
:error="enterError"
role-description="passphrase"
@setData="setPassphrase"
/>
</div>
<p class="encrypt-container__download" @click="onDownloadClick">Download as a text file</p>
<div class="encrypt-container__warning">
<h2 class="encrypt-container__warning__title">The object browser uses server side encryption.</h2>
<h2 class="encrypt-container__warning__title" aria-roledescription="warning-title">The object browser uses server side encryption.</h2>
<p class="encrypt-container__warning__msg">
If you want to use our product with only end-to-end encryption, you may want to use our command line solution.
</p>

View File

@ -16,6 +16,7 @@
:type="type"
:style="style.inputStyle"
:optionsShown="optionsShown"
:aria-roledescription="roleDescription"
@input="onInput"
@change="onInput"
@focus="showPasswordStrength"
@ -105,6 +106,8 @@ export default class HeaderlessInput extends Vue {
private readonly isWhite: boolean;
@Prop({default: false})
private readonly withIcon: boolean;
@Prop({default: ''})
private readonly roleDescription: boolean;
public constructor() {
super();

View File

@ -5,7 +5,7 @@
<div class="register-success-area">
<div class="register-success-area__form-container">
<MailIcon />
<h2 class="register-success-area__form-container__title">You're almost there!</h2>
<h2 class="register-success-area__form-container__title" aria-roledescription="title">You're almost there!</h2>
<p class="register-success-area__form-container__sub-title">
Check your email to confirm your account and get started.
</p>

View File

@ -4,7 +4,7 @@
<template>
<div class="buckets-view">
<div class="buckets-view__title-area">
<h1 class="buckets-view__title-area__title">Buckets</h1>
<h1 class="buckets-view__title-area__title" aria-roledescription="title">Buckets</h1>
<div class="buckets-view__title-area__button" :class="{ disabled: isLoading }" @click="showCreateBucketPopup">
<BucketIcon />
<p class="buckets-view__title-area__button__label">New Bucket</p>

View File

@ -6,7 +6,7 @@
<div class="warning-view__container">
<h1 class="warning-view__container__title">Object Browser</h1>
<div class="warning-view__container__message-container">
<h2 class="warning-view__container__message-container__sub-title">The object browser uses server side encryption.</h2>
<h2 class="warning-view__container__message-container__sub-title" aria-roledescription="sub-title">The object browser uses server side encryption.</h2>
<p class="warning-view__container__message-container__message">
If you want to use our product with only end-to-end encryption, you may want to skip this feature.
</p>

View File

@ -15,9 +15,9 @@
<template v-else>
<p class="key__msg">Now copy and save the Satellite Address and API Key as it will only appear once.</p>
<h3 class="key__label">Satellite Address</h3>
<ValueWithCopy label="Satellite Address" :value="satelliteAddress" />
<ValueWithCopy label="Satellite Address" role-description="satellite-address" :value="satelliteAddress" />
<h3 class="key__label">API Key</h3>
<ValueWithCopy label="API Key" :value="storedAPIKey || restrictedKey" />
<ValueWithCopy label="API Key" role-description="api-key" :value="storedAPIKey || restrictedKey" />
</template>
</template>
</CLIFlowContainer>

View File

@ -4,7 +4,7 @@
<template>
<div class="success-screen">
<Icon />
<h1 class="success-screen__title">Wonderful</h1>
<h1 class="success-screen__title" aria-roledescription="title">Wonderful</h1>
<p class="success-screen__msg">
This was easy right :)
<span v-if="!creditCards.length">

View File

@ -4,7 +4,7 @@
<template>
<div class="flow-container">
<slot name="icon" />
<h1 class="flow-container__title">{{ title }}</h1>
<h1 class="flow-container__title" aria-roledescription="title">{{ title }}</h1>
<slot name="content" />
<div class="flow-container__buttons">
<VButton

View File

@ -3,7 +3,7 @@
<template>
<div class="value-copy">
<p class="value-copy__value">{{ value }}</p>
<p class="value-copy__value" :aria-roledescription="roleDescription">{{ value }}</p>
<VButton
class="value-copy__button"
label="Copy"
@ -31,6 +31,8 @@ export default class ValueWithCopy extends Vue {
public readonly value: string;
@Prop({ default: ''})
public readonly label: string;
@Prop({ default: ''})
public readonly roleDescription: string;
/**
* Holds on copy button click logic.

View File

@ -4,7 +4,7 @@
<template>
<div class="dashboard-area">
<div class="dashboard-area__header-wrapper">
<h1 class="dashboard-area__header-wrapper__title">{{ projectName }} Dashboard</h1>
<h1 class="dashboard-area__header-wrapper__title" aria-roledescription="title">{{ projectName }} Dashboard</h1>
<p class="dashboard-area__header-wrapper__message">
Expect a delay of a few hours between network activity and the latest dashboard stats.
</p>
@ -32,7 +32,6 @@ import { ACCESS_GRANTS_ACTIONS } from '@/store/modules/accessGrants';
import { BUCKET_ACTIONS } from '@/store/modules/buckets';
import { PAYMENTS_ACTIONS } from '@/store/modules/payments';
import { PM_ACTIONS } from '@/utils/constants/actionNames';
import { MetaUtils } from '@/utils/meta';
// @vue/component
@Component({
@ -81,13 +80,6 @@ export default class ProjectDashboard extends Vue {
public get projectName(): string {
return this.$store.getters.selectedProject.name;
}
/**
* Returns project limits increase request url from config.
*/
public get projectLimitsIncreaseRequestURL(): string {
return MetaUtils.getMetaContent('project-limits-increase-request-url');
}
}
</script>

View File

@ -37,6 +37,7 @@
label="Email Address"
placeholder="example@email.com"
:error="emailError"
role-description="email"
@setData="setEmail"
/>
</div>
@ -46,6 +47,7 @@
placeholder="Password"
:error="passwordError"
is-password="true"
role-description="password"
@setData="setPassword"
/>
</div>

View File

@ -57,6 +57,7 @@
<li
class="register-area__input-area__toggle__professional"
:class="{ 'active': isProfessional }"
aria-roledescription="professional-label"
@click.prevent="toggleAccountType(true)"
>
Business
@ -68,6 +69,7 @@
label="Full Name"
placeholder="Enter Full Name"
:error="fullNameError"
role-description="name"
@setData="setFullName"
/>
</div>
@ -76,6 +78,7 @@
label="Email Address"
placeholder="example@email.com"
:error="emailError"
role-description="email"
@setData="setEmail"
/>
</div>
@ -85,6 +88,7 @@
label="Company Name"
placeholder="Acme Corp."
:error="companyNameError"
role-description="company-name"
@setData="setCompanyName"
/>
</div>
@ -93,6 +97,7 @@
label="Position"
placeholder="Position Title"
:error="positionError"
role-description="position"
@setData="setPosition"
/>
</div>
@ -111,6 +116,7 @@
placeholder="Enter Password"
:error="passwordError"
is-password="true"
role-description="password"
@setData="setPassword"
@showPasswordStrength="showPasswordStrength"
@hidePasswordStrength="hidePasswordStrength"
@ -127,6 +133,7 @@
placeholder="Retype Password"
:error="repeatedPasswordError"
is-password="true"
role-description="retype-password"
@setData="setRepeatedPassword"
/>
</div>

View File

@ -6,7 +6,7 @@ exports[`HeaderlessInput.vue renders correctly with default props 1`] = `
<!---->
<!---->
<!---->
</div> <input placeholder="default" type="text" class="headerless-input" style="width: 100%; height: 48px;">
</div> <input placeholder="default" aria-roledescription="" type="text" class="headerless-input" style="width: 100%; height: 48px;">
<!---->
<!---->
<!---->
@ -20,7 +20,7 @@ exports[`HeaderlessInput.vue renders correctly with isPassword prop 1`] = `
<!---->
<!---->
<!---->
</div> <input placeholder="default" type="password" class="headerless-input password" style="width: 100%; height: 48px;">
</div> <input placeholder="default" aria-roledescription="" type="password" class="headerless-input password" style="width: 100%; height: 48px;">
<!---->
<!----> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="input-wrap__image">
<path d="M10 4C4.70642 4 1 10 1 10C1 10 3.6999 16 10 16C16.3527 16 19 10 19 10C19 10 15.3472 4 10 4ZM10 13.8176C7.93537 13.8176 6.2946 12.1271 6.2946 10C6.2946 7.87285 7.93537 6.18239 10 6.18239C12.0646 6.18239 13.7054 7.87285 13.7054 10C13.7054 12.1271 12.0646 13.8176 10 13.8176Z" fill="#AFB7C1" class="input-wrap__image__path"></path>
@ -36,7 +36,7 @@ exports[`HeaderlessInput.vue renders correctly with size props 1`] = `
<!---->
<!---->
<!---->
</div> <input placeholder="test" type="text" class="headerless-input" style="width: 30px; height: 20px;">
</div> <input placeholder="test" aria-roledescription="" type="text" class="headerless-input" style="width: 30px; height: 20px;">
<!---->
<!---->
<!---->

View File

@ -3,7 +3,7 @@
exports[`ProjectDashboard.vue renders correctly 1`] = `
<div class="dashboard-area">
<div class="dashboard-area__header-wrapper">
<h1 class="dashboard-area__header-wrapper__title">test Dashboard</h1>
<h1 aria-roledescription="title" class="dashboard-area__header-wrapper__title">test Dashboard</h1>
<p class="dashboard-area__header-wrapper__message">
Expect a delay of a few hours between network activity and the latest dashboard stats.
</p>