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:
parent
853a7536f6
commit
9153b221fd
97
testsuite/ui/satellite/onboarding_wizard_CLI_flow_test.go
Normal file
97
testsuite/ui/satellite/onboarding_wizard_CLI_flow_test.go
Normal 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")
|
||||
})
|
||||
}
|
@ -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")
|
||||
})
|
||||
}
|
@ -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")
|
||||
})
|
||||
}
|
@ -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")
|
||||
})
|
||||
}
|
||||
|
@ -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")
|
||||
})
|
||||
}
|
||||
|
@ -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!")
|
||||
})
|
||||
}
|
||||
|
@ -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!")
|
||||
})
|
||||
}
|
||||
|
@ -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")
|
||||
})
|
||||
}
|
||||
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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;">
|
||||
<!---->
|
||||
<!---->
|
||||
<!---->
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user