From f73aef54b041fe08d939b52e5c6fe1d133502051 Mon Sep 17 00:00:00 2001 From: GitStart <1501599+gitstart@users.noreply.github.com> Date: Fri, 14 Oct 2022 20:54:59 +0100 Subject: [PATCH] fix: clean up inconsistencies in UI between sentence case and title case (#23681) Co-authored-by: Rachel Co-authored-by: Rachel --- cli/types/cypress-npm-api.d.ts | 2 +- guides/release-process.md | 4 +- .../cypress/e2e/react.cy.ts | 2 +- packages/app/README.md | 2 +- .../cypress/e2e/create-from-component.cy.ts | 8 +- .../e2e/cypress-in-cypress-component.cy.ts | 6 +- .../cypress/e2e/cypress-in-cypress-e2e.cy.ts | 8 +- .../app/cypress/e2e/cypress-in-cypress.cy.ts | 2 +- packages/app/cypress/e2e/runs.cy.ts | 8 +- packages/app/cypress/e2e/settings.cy.ts | 74 +++---- .../app/cypress/e2e/sidebar_navigation.cy.ts | 8 +- packages/app/cypress/e2e/specs.cy.ts | 38 ++-- .../cypress/e2e/specs_list_component.cy.ts | 4 +- packages/app/cypress/e2e/specs_list_e2e.cy.ts | 24 +-- .../cypress/e2e/specs_list_latest_runs.cy.ts | 8 +- .../authChange-subscription.cy.ts | 12 +- .../configChange-subscription.cy.ts | 2 +- .../specChange-subscription.cy.ts | 14 +- packages/app/cypress/e2e/top-nav.cy.ts | 40 ++-- packages/app/src/components/FileMatch.cy.tsx | 12 +- .../app/src/components/SpecPatterns.cy.tsx | 10 +- .../app/src/runner/SnapshotControls.cy.tsx | 2 +- .../SelectorPlayground.cy.tsx | 8 +- .../app/src/runs/CloudConnectButton.cy.tsx | 2 +- .../runs/modals/SelectCloudProjectModal.vue | 1 + .../app/src/settings/SettingsContainer.cy.tsx | 12 +- .../src/settings/device/ProxySettings.cy.tsx | 8 +- .../src/settings/project/CloudSettings.cy.tsx | 4 +- .../app/src/settings/project/RecordKey.cy.tsx | 6 +- .../src/settings/project/SpecPatterns.cy.tsx | 2 +- packages/app/src/specs/InlineSpecList.cy.tsx | 2 +- .../app/src/specs/InlineSpecListHeader.cy.tsx | 6 +- packages/app/src/specs/SpecsList.cy.tsx | 6 +- packages/app/src/specs/SpecsListHeader.cy.tsx | 18 +- .../src/specs/generators/FileChooser.cy.tsx | 12 +- .../DASHBOARD_GRAPHQL_ERROR.html | 2 +- .../DASHBOARD_RECORD_KEY_NOT_VALID.html | 2 +- packages/errors/src/errors.ts | 4 +- .../src/gql-components/RecordPrompt.cy.tsx | 4 +- .../frontend-shared/src/locales/en-US.json | 198 +++++++++--------- packages/graphql/schemas/cloud.graphql | 2 +- packages/graphql/schemas/schema.graphql | 8 +- .../interfaceTypes/gql-ProjectLike.ts | 2 +- .../objectTypes/gql-CurrentProject.ts | 2 +- .../cypress/e2e/choose-a-browser.cy.ts | 32 +-- .../e2e/config-files-error-handling.cy.ts | 6 +- .../cypress/e2e/config-warning.cy.ts | 18 +- .../cypress/e2e/error-handling.cy.ts | 8 +- .../launchpad/cypress/e2e/global-mode.cy.ts | 26 +-- .../launchpad/cypress/e2e/migration.cy.ts | 6 +- .../launchpad/cypress/e2e/open-mode.cy.ts | 32 +-- .../launchpad/cypress/e2e/project-setup.cy.ts | 76 +++---- .../e2e/scaffold-component-testing.cy.ts | 20 +- .../cypress/e2e/scaffold-project.cy.ts | 4 +- .../launchpad/cypress/e2e/slow-network.cy.ts | 4 +- .../src/components/code/FileRow.cy.tsx | 4 +- .../launchpad/src/components/code/FileRow.vue | 1 + .../src/global/GlobalProjectCard.vue | 2 +- .../src/setup/EnvironmentSetup.cy.tsx | 8 +- scripts/gulp/gulpfile.ts | 2 +- system-tests/__snapshots__/record_spec.js | 2 +- system-tests/lib/system-tests.ts | 2 +- 62 files changed, 428 insertions(+), 426 deletions(-) diff --git a/cli/types/cypress-npm-api.d.ts b/cli/types/cypress-npm-api.d.ts index 269889d6ffd0..126f50202863 100644 --- a/cli/types/cypress-npm-api.d.ts +++ b/cli/types/cypress-npm-api.d.ts @@ -60,7 +60,7 @@ declare namespace CypressCommandLine { */ headless: boolean /** - * Specify your secret record key + * Specify your secret Record Key */ key: string /** diff --git a/guides/release-process.md b/guides/release-process.md index dd309fea4c96..debf1b71bfc3 100644 --- a/guides/release-process.md +++ b/guides/release-process.md @@ -82,7 +82,7 @@ In the following instructions, "X.Y.Z" is used to denote the [next version of Cy - Go into a project, run a quick test, make sure things look right - Optionally, install the new version into an established project and run the tests there - [cypress-realworld-app](https://github.com/cypress-io/cypress-realworld-app) uses yarn and represents a typical consumer implementation. - - Optionally, do more thorough tests, for example test the new version of Cypress against the Cypress dashboard repo. + - Optionally, do more thorough tests, for example test the new version of Cypress against the Cypress Dashboard repo. 5. Log into AWS SSO with `aws sso login --profile `. If you have setup your credentials under a different profile than `prod`, be sure to set the `AWS_PROFILE` environment variable to that profile name for the remaining steps. For example, if you are using `production` instead of `prod`, do `export AWS_PROFILE=production`. @@ -119,7 +119,7 @@ In the following instructions, "X.Y.Z" is used to denote the [next version of Cy - Go into a project, run a quick test, make sure things look right - Install the new version into an established project and run the tests there - [cypress-realworld-app](https://github.com/cypress-io/cypress-realworld-app) uses yarn and represents a typical consumer implementation. - - Optionally, do more thorough tests, for example test the new version of Cypress against the Cypress dashboard repo. + - Optionally, do more thorough tests, for example test the new version of Cypress against the Cypress Dashboard repo. 11. Create or review the release-specific documentation and changelog in [cypress-documentation](https://github.com/cypress-io/cypress-documentation). If there is not already a release-specific PR open, create one. This PR must be merged, built, and deployed before moving to the next step. - Use [`release-automations`](https://github.com/cypress-io/release-automations)'s `issues-in-release` tool to generate a starting point for the changelog, based off of ZenHub: diff --git a/npm/webpack-dev-server/cypress/e2e/react.cy.ts b/npm/webpack-dev-server/cypress/e2e/react.cy.ts index 8071d1807292..310d8bfe66fc 100644 --- a/npm/webpack-dev-server/cypress/e2e/react.cy.ts +++ b/npm/webpack-dev-server/cypress/e2e/react.cy.ts @@ -131,7 +131,7 @@ for (const project of WEBPACK_REACT) { cy.findByTestId('new-spec-button').click() cy.findByRole('dialog').within(() => { cy.get('input').clear().type('src/App.cy.jsx') - cy.contains('button', 'Create Spec').click() + cy.contains('button', 'Create spec').click() }) cy.findByRole('dialog').within(() => { diff --git a/packages/app/README.md b/packages/app/README.md index cca5801ce754..eab9360c4b58 100644 --- a/packages/app/README.md +++ b/packages/app/README.md @@ -16,7 +16,7 @@ This is the front-end for the Cypress App. Cypress has two modes: `run` and `open`. We want run mode to be as light and fast as possible, since this is the mode used to run on CI machines, etc. Run mode has minimal UI showing only what is necessary. Open mode is the interactive experience. -- **`open`** mode is driven using GraphQL and urql. It shows the full Cypress app, include the top nav, side nav, spec list, etc. You can change between testing types, check your latest runs on the Cypress dashboard, update settings, etc. +- **`open`** mode is driven using GraphQL and urql. It shows the full Cypress app, include the top nav, side nav, spec list, etc. You can change between testing types, check your latest runs on the Cypress Dashboard, update settings, etc. - **`run`** mode is does not rely on GraphQL. This is so we can be as performant as possible. It only renders the "runner" part of the UI, which is comprised of the command log, Spec Runner header, and AUT iframe. The two modes are composed using the same logic, but have slightly different components. You can see where the differences are in `Runner.vue`(src/pages/Specs/Runner.vue). Notice that `` receives a `gql` prop, since it uses GraphQL, and `` does not. diff --git a/packages/app/cypress/e2e/create-from-component.cy.ts b/packages/app/cypress/e2e/create-from-component.cy.ts index b38809f9be53..5771917cb9b3 100644 --- a/packages/app/cypress/e2e/create-from-component.cy.ts +++ b/packages/app/cypress/e2e/create-from-component.cy.ts @@ -28,7 +28,7 @@ function validateCreateFromComponentCard (beforeEachFn: () => void, expectedSpec it('Lists Vue components in the project', () => { cy.get('@ComponentCard').click() - cy.findByText('2 Matches').should('be.visible') + cy.findByText('2 matches').should('be.visible') cy.findByText('App').should('be.visible') cy.findByText('HelloWorld').should('be.visible') @@ -38,11 +38,11 @@ function validateCreateFromComponentCard (beforeEachFn: () => void, expectedSpec cy.get('@ComponentCard').click() cy.findByText('*.vue').should('be.visible') - cy.findByText('2 Matches').should('be.visible') + cy.findByText('2 matches').should('be.visible') cy.findByLabelText('file-name-input').type('HelloWorld') cy.findByText('HelloWorld').should('be.visible') - cy.findByText('1 of 2 Matches').should('be.visible') + cy.findByText('1 of 2 matches').should('be.visible') cy.findByText('App').should('not.exist') }) @@ -105,7 +105,7 @@ describe('Create from component card', () => { cy.startAppServer('component') cy.visitApp() - cy.findByText('New Spec').click() + cy.findByText('New spec').click() cy.findAllByTestId('card').eq(0).as('ComponentCard') }, 'src/specs-folder/HelloWorld.cy.js') }) diff --git a/packages/app/cypress/e2e/cypress-in-cypress-component.cy.ts b/packages/app/cypress/e2e/cypress-in-cypress-component.cy.ts index 6bb825839dea..e196be850bfa 100644 --- a/packages/app/cypress/e2e/cypress-in-cypress-component.cy.ts +++ b/packages/app/cypress/e2e/cypress-in-cypress-component.cy.ts @@ -38,21 +38,21 @@ describe('Cypress In Cypress CT', { viewportWidth: 1500, defaultCommandTimeout: snapshotAUTPanel('cy.get selector') - cy.findByTestId('playground-num-elements').contains('1 Match') + cy.findByTestId('playground-num-elements').contains('1 match') cy.window().then((win) => cy.spy(win.console, 'log')) cy.findByTestId('playground-print').click().window().then((win) => { expect(win.console.log).to.have.been.calledWith('%cCommand: ', 'font-weight: bold', 'cy.get(\'[data-cy-root]\')') }) - cy.findByLabelText('Selector Methods').click() + cy.findByLabelText('Selector methods').click() cy.findByRole('menuitem', { name: 'cy.contains' }).click() cy.findByTestId('playground-selector').clear().type('Component Test') snapshotAUTPanel('cy.contains selector') - cy.findByTestId('playground-num-elements').contains('1 Match') + cy.findByTestId('playground-num-elements').contains('1 match') }) it('navigation between specs and other parts of the app works', () => { diff --git a/packages/app/cypress/e2e/cypress-in-cypress-e2e.cy.ts b/packages/app/cypress/e2e/cypress-in-cypress-e2e.cy.ts index c8605e3b20a3..79ef8ed39f26 100644 --- a/packages/app/cypress/e2e/cypress-in-cypress-e2e.cy.ts +++ b/packages/app/cypress/e2e/cypress-in-cypress-e2e.cy.ts @@ -45,7 +45,7 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout: snapshotAUTPanel('cy.get selector') - cy.findByTestId('playground-num-elements').contains('3 Matches') + cy.findByTestId('playground-num-elements').contains('3 matches') // This validates that each matching element is covered by the playground highlighting cy.get('iframe.aut-iframe').its('0.contentDocument.body').then(cy.wrap).within(() => { @@ -59,14 +59,14 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout: }) }) - cy.findByLabelText('Selector Methods').click() + cy.findByLabelText('Selector methods').click() cy.findByRole('menuitem', { name: 'cy.contains' }).click() cy.findByTestId('playground-selector').clear().type('Item 1') snapshotAUTPanel('cy.contains selector') - cy.findByTestId('playground-num-elements').contains('1 Match') + cy.findByTestId('playground-num-elements').contains('1 match') cy.window().then((win) => cy.spy(win.console, 'log')) cy.findByTestId('playground-print').click().window().then((win) => { @@ -202,7 +202,7 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout: cy.contains('withFailure.spec').click() cy.contains('[aria-controls=reporter-inline-specs-list]', 'Specs') cy.get('body').type('f') - cy.contains('Search Specs') + cy.contains('Search specs') cy.contains('withWait.spec').click() cy.waitForSpecToFinish() diff --git a/packages/app/cypress/e2e/cypress-in-cypress.cy.ts b/packages/app/cypress/e2e/cypress-in-cypress.cy.ts index b958cd4785a4..2bba6f4c8c92 100644 --- a/packages/app/cypress/e2e/cypress-in-cypress.cy.ts +++ b/packages/app/cypress/e2e/cypress-in-cypress.cy.ts @@ -224,7 +224,7 @@ describe('Cypress in Cypress', { viewportWidth: 1500, defaultCommandTimeout: 100 cy.get('body').click() }) - cy.get('[data-cy="playground-num-elements"]').contains('1 Match') + cy.get('[data-cy="playground-num-elements"]').contains('1 match') }) it(`hides reporter when NO_COMMAND_LOG is set in open mode for ${testingType}`, () => { diff --git a/packages/app/cypress/e2e/runs.cy.ts b/packages/app/cypress/e2e/runs.cy.ts index a825ef5c9de3..c03d84a13489 100644 --- a/packages/app/cypress/e2e/runs.cy.ts +++ b/packages/app/cypress/e2e/runs.cy.ts @@ -81,7 +81,7 @@ describe('App: Runs', { viewportWidth: 1200 }, () => { }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.contains('button', 'Log In').click() + cy.contains('button', 'Log in').click() }) cy.withCtx((ctx, o) => { @@ -272,10 +272,10 @@ describe('App: Runs', { viewportWidth: 1200 }, () => { cy.contains('button', 'Log in to the Cypress Dashboard').click() cy.findByRole('dialog', { name: 'Log in to Cypress' }).as('logInModal').within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() }) - cy.findByRole('dialog', { name: 'Login Successful' }).within(() => { + cy.findByRole('dialog', { name: 'Login successful' }).within(() => { cy.findByRole('button', { name: 'Connect project' }).click() }) @@ -443,7 +443,7 @@ describe('App: Runs', { viewportWidth: 1200 }, () => { cy.findByText(defaultMessages.runs.errors.notFound.button).should('be.visible').click() cy.get('[aria-modal="true"]').should('exist') cy.get('[data-cy="selectProject"] button').should('have.text', 'Mock Project') - cy.findByText(defaultMessages.runs.connect.modal.selectProject.connectProject).click() + cy.get('[data-cy="connect-project"]').click() cy.get('[data-cy="runs"]', { timeout: 7500 }) }) }) diff --git a/packages/app/cypress/e2e/settings.cy.ts b/packages/app/cypress/e2e/settings.cy.ts index e296eda4c084..672e7cfaba25 100644 --- a/packages/app/cypress/e2e/settings.cy.ts +++ b/packages/app/cypress/e2e/settings.cy.ts @@ -17,11 +17,11 @@ describe('App: Settings', () => { cy.get(SidebarSettingsLinkSelector).click() cy.contains('[data-cy="app-header-bar"]', 'Settings') - cy.contains('[data-cy="app-header-bar"] button', 'Log In').should('be.visible') + cy.contains('[data-cy="app-header-bar"] button', 'Log in').should('be.visible') - cy.findByText('Device Settings').should('be.visible') - cy.findByText('Project Settings').should('be.visible') - cy.findByText('Dashboard Settings').should('be.visible') + cy.findByText('Device settings').should('be.visible') + cy.findByText('Project settings').should('be.visible') + cy.findByText('Dashboard settings').should('be.visible') }) describe('Cloud Settings', () => { @@ -33,7 +33,7 @@ describe('App: Settings', () => { cy.startAppServer('e2e') cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Dashboard Settings').click() + cy.findByText('Dashboard settings').click() cy.findByText('Project ID').should('be.visible') cy.get('[data-cy="code-box"]').should('contain', 'fromCli') cy.findByText('Copy').click() @@ -49,17 +49,17 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Dashboard Settings').click() - cy.findByText('Record Key').should('be.visible') + cy.findByText('Dashboard settings').click() + cy.findByText('Record key').should('be.visible') }) - it('obfuscates each record key and has a button to reveal the key', () => { + it('obfuscates each Record Key and has a button to reveal the key', () => { cy.startAppServer('e2e') cy.loginUser() cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Dashboard Settings').click() + cy.findByText('Dashboard settings').click() cy.get('[data-cy="code-box"]').should('contain', '***') cy.get('[aria-label="Record Key Visibility Toggle"]').click() cy.get('[data-cy="code-box"]').should('contain', '2aaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa') @@ -69,8 +69,8 @@ describe('App: Settings', () => { cy.startAppServer('e2e') cy.loginUser() cy.visitApp('settings') - cy.findByText('Dashboard Settings').click() - cy.findByText('Manage Keys').click() + cy.findByText('Dashboard settings').click() + cy.findByText('Manage keys').click() cy.withRetryableCtx((ctx) => { expect((ctx.actions.electron.openExternal as SinonStub).lastCall.lastArg).to.eq('http:/test.cloud/cloud-project/settings') }) @@ -97,13 +97,13 @@ describe('App: Settings', () => { // Wait for the test to pass, so the test is completed cy.get('.passed > .num').should('contain', 1) cy.get(SidebarSettingsLinkSelector).click() - cy.contains('Dashboard Settings').click() + cy.contains('Dashboard settings').click() // Assert the data is not there before it arrives - cy.contains('Record Key').should('not.exist') - cy.contains('Record Key') + cy.contains('Record key').should('not.exist') + cy.contains('Record key') }) - it('clears nested cloud data (record key) upon logging out', () => { + it('clears nested cloud data (Record Key) upon logging out', () => { cy.startAppServer('e2e') cy.loginUser() cy.visitApp() @@ -112,23 +112,23 @@ describe('App: Settings', () => { }) cy.findByTestId('sidebar-link-settings-page').click() - cy.contains('Dashboard Settings').click() - cy.contains('Record Key').should('exist') + cy.contains('Dashboard settings').click() + cy.contains('Record key').should('exist') cy.findByTestId('sidebar-link-runs-page').click() cy.findByTestId('user-avatar-title').click() - cy.findByRole('button', { name: 'Log Out' }).click() + cy.findByRole('button', { name: 'Log out' }).click() cy.withRetryableCtx((ctx, o) => { expect(ctx.actions.auth.logout).to.have.been.calledOnce }) cy.findByTestId('sidebar-link-settings-page').click() - cy.contains('Dashboard Settings').click() - cy.contains('Record Key').should('not.exist') + cy.contains('Dashboard settings').click() + cy.contains('Record key').should('not.exist') }) }) - describe('Project Settings', () => { + describe('Project settings', () => { it('shows the Spec Patterns section (default specPattern value)', () => { cy.scaffoldProject('simple-ct') cy.openProject('simple-ct') @@ -137,8 +137,8 @@ describe('App: Settings', () => { cy.visitApp() cy.findByTestId('sidebar-link-settings-page').click() - cy.findByText('Project Settings').click() - cy.get('[data-cy="file-match-indicator"]').contains('2 Matches') + cy.findByText('Project settings').click() + cy.get('[data-cy="file-match-indicator"]').contains('2 matches') cy.get('[data-cy="spec-pattern"]').contains('**/*.cy.{js,jsx,ts,tsx}') cy.get('[data-cy="settings-specPatterns"').within(() => { @@ -155,8 +155,8 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() - cy.get('[data-cy="file-match-indicator"]').contains('41 Matches') + cy.findByText('Project settings').click() + cy.get('[data-cy="file-match-indicator"]').contains('41 matches') cy.get('[data-cy="spec-pattern"]').contains('tests/**/*') }) @@ -166,7 +166,7 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.get('[data-cy="settings-experiments"]').within(() => { cy.validateExternalLink({ name: 'Learn more.', @@ -229,7 +229,7 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.get('[data-cy="config-code"]').contains('{') }) @@ -239,7 +239,7 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.get('[data-cy="config-legend"]').within(() => { cy.get('.bg-gray-50').contains('default') cy.get('.bg-teal-100').contains('config') @@ -267,7 +267,7 @@ describe('App: Settings', () => { }) cy.visitApp('/settings') - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.findByRole('button', { name: 'Edit' }).click() cy.withRetryableCtx((ctx) => { expect((ctx.actions.file.openFile as SinonStub).lastCall.args[0]).to.eq(ctx.lifecycleManager.configFilePath) @@ -282,7 +282,7 @@ describe('App: Settings', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.get('[data-cy="config-legend"]').within(() => { cy.get('.bg-gray-50').contains('default') cy.get('.bg-teal-100').contains('config') @@ -329,7 +329,7 @@ describe('App: Settings', () => { }) cy.visitApp('settings') - cy.contains('Device Settings').click() + cy.contains('Device settings').click() }) it('selects well known editor', () => { @@ -344,7 +344,7 @@ describe('App: Settings', () => { cy.visitApp() cy.findByTestId('sidebar-link-settings-page').click() cy.wait(200) - cy.get('[data-cy="Device Settings"]').click() + cy.get('[data-cy="Device settings"]').click() cy.get('[data-cy="custom-editor"]').should('not.exist') }) @@ -365,7 +365,7 @@ describe('App: Settings', () => { // preferred editor entered from input should have been persisted cy.findByTestId('sidebar-link-settings-page').click() cy.wait(100) - cy.get('[data-cy="Device Settings"]').click() + cy.get('[data-cy="Device settings"]').click() cy.get('[data-cy="custom-editor"]').should('have.value', '/usr/local/bin/vim') }) @@ -393,7 +393,7 @@ describe('App: Settings', () => { cy.visitApp() cy.findByTestId('sidebar-link-settings-page').click() cy.wait(200) - cy.get('[data-cy="Device Settings"]').click() + cy.get('[data-cy="Device settings"]').click() cy.get('[data-cy="custom-editor"]').should('not.exist') }) @@ -408,7 +408,7 @@ describe('App: Settings without cloud', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Dashboard Settings').click() + cy.findByText('Dashboard settings').click() cy.findByText('Project ID').should('exist') cy.withCtx((ctx, o) => { o.sinon.spy(ctx._apis.authApi, 'logIn') @@ -416,7 +416,7 @@ describe('App: Settings without cloud', () => { cy.contains('button', 'Log in to the Cypress Dashboard').click() cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.contains('button', 'Log In').click() + cy.contains('button', 'Log in').click() }) cy.withCtx((ctx, o) => { @@ -434,7 +434,7 @@ describe('App: Settings without cloud', () => { cy.visitApp() cy.get(SidebarSettingsLinkSelector).click() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.get('[data-cy=config-code]').within(() => { const { browsers } = Cypress.config() diff --git a/packages/app/cypress/e2e/sidebar_navigation.cy.ts b/packages/app/cypress/e2e/sidebar_navigation.cy.ts index b0d195d723b2..48d791221fb6 100644 --- a/packages/app/cypress/e2e/sidebar_navigation.cy.ts +++ b/packages/app/cypress/e2e/sidebar_navigation.cy.ts @@ -35,7 +35,7 @@ describe('Sidebar Navigation', { viewportWidth: 1280 }, () => { .should('have.attr', 'aria-label', 'Expand sidebar') cy.findByTestId('keyboard-modal-trigger') - .should('have.attr', 'aria-label', 'Keyboard Shortcuts') + .should('have.attr', 'aria-label', 'Keyboard shortcuts') cy.get('nav') .should('have.attr', 'aria-label', 'Pages') @@ -116,7 +116,7 @@ describe('Sidebar Navigation', { viewportWidth: 1280 }, () => { cy.findByTestId('sidebar').should('have.css', 'width', '64px') // assert width to ensure transition has finished cy.findByTestId('keyboard-modal-trigger').should('be.visible').click() - cy.contains('h2', 'Keyboard Shortcuts').should('be.visible') + cy.contains('h2', 'Keyboard shortcuts').should('be.visible') cy.get('li p').contains('Re-run tests').should('be.visible') cy.get('li p').contains('Stop tests').should('be.visible') cy.get('li p').contains('Toggle specs list').should('be.visible') @@ -209,7 +209,7 @@ describe('Sidebar Navigation', { viewportWidth: 1280 }, () => { it('has menu item that shows the keyboard shortcuts modal (expanded state)', () => { cy.findByTestId('keyboard-modal-trigger').should('be.visible').click() - cy.contains('h2', 'Keyboard Shortcuts').should('be.visible') + cy.contains('h2', 'Keyboard shortcuts').should('be.visible') cy.get('li p').contains('Re-run tests').should('be.visible') cy.get('li p').contains('Stop tests').should('be.visible') cy.get('li p').contains('Toggle specs list').should('be.visible') @@ -217,7 +217,7 @@ describe('Sidebar Navigation', { viewportWidth: 1280 }, () => { cy.get('li span').contains('s') cy.get('li span').contains('f') cy.get('[aria-label="Close"]').click() - cy.findByText('Keyboard Shortcuts').should('not.exist') + cy.findByText('Keyboard shortcuts').should('not.exist') }) it('has a menu item labeled "Runs" which takes you to the Runs page', () => { diff --git a/packages/app/cypress/e2e/specs.cy.ts b/packages/app/cypress/e2e/specs.cy.ts index 4838370b028a..f3ce0acb69af 100644 --- a/packages/app/cypress/e2e/specs.cy.ts +++ b/packages/app/cypress/e2e/specs.cy.ts @@ -61,7 +61,7 @@ describe('App: Specs', () => { }).should('be.visible').within(() => { cy.validateExternalLink({ name: 'Need help', href: 'https://on.cypress.io/test-type-options' }) cy.findByRole('button', { name: 'Close' }).should('be.visible').as('CloseDialogButton') - cy.get('[data-cy="file-match-indicator"]').contains('No Matches') + cy.get('[data-cy="file-match-indicator"]').contains('No matches') cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.cy.{js,jsx,ts,tsx}') }) @@ -340,12 +340,12 @@ describe('App: Specs', () => { .should('be.visible') .and('contain', defaultMessages.createSpec.page.customPatternNoSpecs.description.split('{0}')[0]) - cy.findByTestId('file-match-indicator').should('contain', 'No Matches') + cy.findByTestId('file-match-indicator').should('contain', 'No matches') cy.findByRole('button', { name: 'cypress.config.js' }) cy.findByTestId('spec-pattern').should('contain', 'src/**/*.{cy,spec}.{js,jsx}') cy.contains('button', defaultMessages.createSpec.updateSpecPattern) - cy.findByRole('button', { name: 'New Spec', exact: false }) + cy.findByRole('button', { name: 'New spec', exact: false }) }) it('opens config file in ide from SpecPattern', () => { @@ -385,7 +385,7 @@ describe('App: Specs', () => { }) it('shows new spec button to start creation workflow', () => { - cy.findByRole('button', { name: 'New Spec', exact: false }).click() + cy.findByRole('button', { name: 'New spec', exact: false }).click() cy.findByRole('dialog', { name: defaultMessages.createSpec.newSpecModalTitle }).within(() => { cy.findAllByTestId('card').eq(0) @@ -398,7 +398,7 @@ describe('App: Specs', () => { context('scaffold empty spec', () => { it('should generate empty spec', () => { - cy.findByRole('button', { name: 'New Spec', exact: false }).click() + cy.findByRole('button', { name: 'New spec', exact: false }).click() cy.findByRole('dialog', { name: defaultMessages.createSpec.newSpecModalTitle }).within(() => { cy.findAllByTestId('card').eq(0) @@ -455,9 +455,9 @@ describe('App: Specs', () => { // Timeout is increased here to allow ample time for the config change to be processed cy.contains('src/e2e/**/*.{js,jsx}', { timeout: 12000 }).should('be.visible') - cy.contains('No Specs Found').should('be.visible') + cy.contains('No specs found').should('be.visible') - cy.findByRole('button', { name: 'New Spec' }).click() + cy.findByRole('button', { name: 'New spec' }).click() cy.contains('Create new empty spec').click() cy.findAllByLabelText(defaultMessages.createSpec.e2e.importEmptySpec.inputPlaceholder) @@ -474,7 +474,7 @@ describe('App: Specs', () => { }) it('shows extension warning', () => { - cy.findByRole('button', { name: 'New Spec', exact: false }).click() + cy.findByRole('button', { name: 'New spec', exact: false }).click() cy.findByRole('dialog', { name: defaultMessages.createSpec.newSpecModalTitle }).within(() => { cy.findAllByTestId('card').eq(0) @@ -572,7 +572,7 @@ describe('App: Specs', () => { cy.findByLabelText('Enter a relative path...').clear().type('cypress/my-empty-spec.cy.js') - cy.findByRole('button', { name: 'Create Spec' }).click() + cy.findByRole('button', { name: 'Create spec' }).click() }) cy.findByRole('dialog', { @@ -598,7 +598,7 @@ describe('App: Specs', () => { cy.findByLabelText('Enter a relative path...').clear().type('cypress/my-empty-spec.cy.js') - cy.findByRole('button', { name: 'Create Spec' }).click() + cy.findByRole('button', { name: 'Create spec' }).click() }) cy.findByRole('dialog', { name: defaultMessages.createSpec.successPage.header }).within(() => { @@ -618,7 +618,7 @@ describe('App: Specs', () => { cy.findByLabelText('Enter a relative path...').clear().type('cypress/my-empty-spec.cy.js') - cy.findByRole('button', { name: 'Create Spec' }).click() + cy.findByRole('button', { name: 'Create spec' }).click() }) cy.findByRole('dialog', { name: defaultMessages.createSpec.successPage.header }).within(() => { @@ -674,12 +674,12 @@ describe('App: Specs', () => { .should('be.visible') .and('contain', defaultMessages.createSpec.page.customPatternNoSpecs.description.split('{0}')[0]) - cy.findByTestId('file-match-indicator').should('contain', 'No Matches') + cy.findByTestId('file-match-indicator').should('contain', 'No matches') cy.findByRole('button', { name: 'cypress.config.js' }) cy.findByTestId('spec-pattern').should('contain', 'src/specs-folder/*.cy.{js,jsx}') cy.contains('button', defaultMessages.createSpec.updateSpecPattern) - cy.findByRole('button', { name: 'New Spec', exact: false }) + cy.findByRole('button', { name: 'New spec', exact: false }) }) it('opens config file in ide from SpecPattern', () => { @@ -707,13 +707,13 @@ describe('App: Specs', () => { }) it('shows new spec button to start creation workflow', () => { - cy.findByRole('button', { name: 'New Spec', exact: false }).click() + cy.findByRole('button', { name: 'New spec', exact: false }).click() cy.findByRole('dialog', { name: 'Enter the path for your new spec' }).should('be.visible') }) it('shows create first spec page with create empty option and goes back if it is cancel', () => { - cy.findByRole('button', { name: 'New Spec', exact: false }).click() + cy.findByRole('button', { name: 'New spec', exact: false }).click() cy.contains('Cancel').click() @@ -734,16 +734,16 @@ describe('App: Specs', () => { // Timeout is increased here to allow ample time for the config change to be processed cy.contains('src/specs-folder/*.{js,jsx}', { timeout: 12000 }).should('be.visible') - cy.contains('No Specs Found').should('be.visible') + cy.contains('No specs found').should('be.visible') - cy.findByRole('button', { name: 'New Spec' }).click() + cy.findByRole('button', { name: 'New spec' }).click() cy.findByRole('dialog', { name: 'Enter the path for your new spec', }).within(() => { cy.findByLabelText('Enter a relative path...').invoke('val').should('eq', getPathForPlatform('src/specs-folder/ComponentName.js')) - cy.findByRole('button', { name: 'Create Spec' }).click() + cy.findByRole('button', { name: 'Create spec' }).click() }) cy.findByRole('dialog', { @@ -868,7 +868,7 @@ describe('App: Specs', () => { } }, { specs }) - cy.contains('20 Matches') + cy.contains('20 matches') cy.withRetryableCtx((ctx, o) => { // setSpecs is debounced, the number of calls should be less than the number of files removed diff --git a/packages/app/cypress/e2e/specs_list_component.cy.ts b/packages/app/cypress/e2e/specs_list_component.cy.ts index 640704b06c2f..de3f9b3163cd 100644 --- a/packages/app/cypress/e2e/specs_list_component.cy.ts +++ b/packages/app/cypress/e2e/specs_list_component.cy.ts @@ -14,7 +14,7 @@ describe('App: Spec List (Component)', () => { cy.get('[data-cy="spec-pattern-modal"]').should('be.visible') cy.get('[data-cy="spec-pattern"]').contains('cypress/component-tests/*.spec.js') - cy.contains('button', 'Update Spec Pattern').click() + cy.contains('button', 'Update spec pattern').click() cy.get('[data-cy="choose-editor-modal"]').should('be.visible').within(() => { cy.get('[aria-label="Close"]').click() }) @@ -31,7 +31,7 @@ describe('App: Spec List (Component)', () => { cy.get('[data-selected-spec="false"]').should('contain', 'foo') }) - it('opens the "Create a new spec" modal after clicking the "New Specs" button', () => { + it('opens the "Create a new spec" modal after clicking the "New specs" button', () => { cy.get('[data-cy="standard-modal"]').should('not.exist') cy.get('[data-cy="new-spec-button"]').click() cy.get('[data-cy="standard-modal"]').get('h2').contains('Enter the path for your new spec') diff --git a/packages/app/cypress/e2e/specs_list_e2e.cy.ts b/packages/app/cypress/e2e/specs_list_e2e.cy.ts index 2c778a8b6a5b..f66467d8fb2c 100644 --- a/packages/app/cypress/e2e/specs_list_e2e.cy.ts +++ b/packages/app/cypress/e2e/specs_list_e2e.cy.ts @@ -85,7 +85,7 @@ describe('App: Spec List (E2E)', () => { cy.findAllByTestId('spec-item').should('contain', 'dom-content.spec.js') }) - it('opens the "Create a new spec" modal after clicking the "New Specs" button', () => { + it('opens the "Create a new spec" modal after clicking the "New specs" button', () => { cy.findByTestId('standard-modal').should('not.exist') cy.findByTestId('new-spec-button').click() cy.findByTestId('standard-modal').get('h2').contains('Create a new spec') @@ -139,12 +139,12 @@ describe('App: Spec List (E2E)', () => { describe('typing the filter', function () { beforeEach(() => { - cy.findByLabelText('Search Specs').as('searchField') + cy.findByLabelText('Search specs').as('searchField') }) it('displays only matching spec', function () { cy.get('button') - .contains('23 Matches') + .contains('23 matches') .should('not.contain.text', 'of') clearSearchAndType('content') @@ -152,13 +152,13 @@ describe('App: Spec List (E2E)', () => { .should('have.length', 2) .and('contain', 'dom-content.spec.js') - cy.get('button').contains('2 of 23 Matches') + cy.get('button').contains('2 of 23 matches') - cy.findByLabelText('Search Specs').clear().type('asdf') + cy.findByLabelText('Search specs').clear().type('asdf') cy.findAllByTestId('spec-item') .should('have.length', 0) - cy.get('button').contains('0 of 23 Matches') + cy.get('button').contains('0 of 23 matches') }) it('only shows matching folders', () => { @@ -206,10 +206,10 @@ describe('App: Spec List (E2E)', () => { it('clears the filter on search bar clear button click', function () { clearSearchAndType('123') cy.findByLabelText('Clear search field').click() - cy.findByLabelText('Search Specs') + cy.findByLabelText('Search specs') .should('have.value', '') - cy.get('button').contains('23 Matches') + cy.get('button').contains('23 matches') }) it('clears the filter if the user presses ESC key', function () { @@ -218,7 +218,7 @@ describe('App: Spec List (E2E)', () => { cy.get('@searchField').should('have.value', '') - cy.get('button').contains('23 Matches') + cy.get('button').contains('23 matches') }) it('shows empty message if no results', function () { @@ -231,10 +231,10 @@ describe('App: Spec List (E2E)', () => { it('clears and focuses the filter field when clear search is clicked', function () { clearSearchAndType('asdf') - cy.findByText('Clear Search').click() + cy.findByText('Clear search').click() cy.focused().should('have.id', 'spec-filter') - cy.get('button').contains('23 Matches') + cy.get('button').contains('23 matches') }) it('normalizes directory path separators for Windows', function () { @@ -274,7 +274,7 @@ describe('App: Spec List (E2E)', () => { launchApp(targetSpecFile) - cy.findByLabelText('Search Specs').should('have.value', targetSpecFile) + cy.findByLabelText('Search specs').should('have.value', targetSpecFile) }) }) }) diff --git a/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts b/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts index e8cef2166d81..6d99a9b6a384 100644 --- a/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts +++ b/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts @@ -208,7 +208,7 @@ describe('App/Cloud Integration - Latest runs and Average duration', { viewportW .click() cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.get('button').contains('Log In') + cy.get('button').contains('Log in') cy.get('[aria-label="Close"]').click() }) @@ -222,7 +222,7 @@ describe('App/Cloud Integration - Latest runs and Average duration', { viewportW .click() cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.get('button').contains('Log In') + cy.get('button').contains('Log in') cy.get('[aria-label="Close"]').click() }) @@ -405,7 +405,7 @@ describe('App/Cloud Integration - Latest runs and Average duration', { viewportW .should('have.attr', 'aria-expanded', 'false') .then((dir) => { // Perform a search/filter operation - cy.findByLabelText('Search Specs').type(dir.text()[0]) + cy.findByLabelText('Search specs').type(dir.text()[0]) }) // Previously-collapsed directory should automatically expand @@ -422,7 +422,7 @@ describe('App/Cloud Integration - Latest runs and Average duration', { viewportW // Move to Settings page and wait for render cy.get('a[href="#/settings"]').click() cy.location('hash').should('include', '/settings') - cy.findByText('Project Settings').should('be.visible') + cy.findByText('Project settings').should('be.visible') // Move back to Specs page and wait for render cy.get('a[href="#/specs"]').click() diff --git a/packages/app/cypress/e2e/subscriptions/authChange-subscription.cy.ts b/packages/app/cypress/e2e/subscriptions/authChange-subscription.cy.ts index acbfa8274f87..568b738f8d59 100644 --- a/packages/app/cypress/e2e/subscriptions/authChange-subscription.cy.ts +++ b/packages/app/cypress/e2e/subscriptions/authChange-subscription.cy.ts @@ -30,7 +30,7 @@ describe('authChange subscription', () => { }) it('responds to authChange subscription for login', () => { - cy.contains('Log In') + cy.contains('Log in') cy.wait(500) cy.withCtx(async (ctx) => { await ctx.actions.auth.login('testing', 'testing') @@ -48,7 +48,7 @@ describe('authChange subscription', () => { await ctx.actions.auth.logout() }) - cy.contains('Log In') + cy.contains('Log in') }) }) @@ -59,7 +59,7 @@ describe('authChange subscription', () => { }) it('responds to authChange subscription for login', () => { - cy.contains('Log In') + cy.contains('Log in') cy.wait(500) cy.withCtx(async (ctx) => { await ctx.actions.auth.login('testing', 'testing') @@ -77,7 +77,7 @@ describe('authChange subscription', () => { await ctx.actions.auth.logout() }) - cy.contains('Log In') + cy.contains('Log in') }) }) @@ -87,7 +87,7 @@ describe('authChange subscription', () => { }) it('responds to authChange subscription for login', () => { - cy.contains('Log In') + cy.contains('Log in') cy.wait(500) cy.withCtx(async (ctx) => { await ctx.actions.auth.login('testing', 'testing') @@ -105,7 +105,7 @@ describe('authChange subscription', () => { await ctx.actions.auth.logout() }) - cy.contains('Log In') + cy.contains('Log in') }) }) }) diff --git a/packages/app/cypress/e2e/subscriptions/configChange-subscription.cy.ts b/packages/app/cypress/e2e/subscriptions/configChange-subscription.cy.ts index e9b895362a1d..2a26713d8798 100644 --- a/packages/app/cypress/e2e/subscriptions/configChange-subscription.cy.ts +++ b/packages/app/cypress/e2e/subscriptions/configChange-subscription.cy.ts @@ -27,7 +27,7 @@ describe('configChange subscription', () => { describe('on config page', () => { it('responds to configChange event when viewport is changed', () => { cy.contains('a', 'Settings').click() - cy.get('[data-cy="collapsible-header"]').contains('Project Settings').click() + cy.get('[data-cy="collapsible-header"]').contains('Project settings').click() cy.contains(`projectId: 'abc123'`) updateProjectIdInCypressConfig('foo456') cy.contains(`projectId: 'foo456'`) diff --git a/packages/app/cypress/e2e/subscriptions/specChange-subscription.cy.ts b/packages/app/cypress/e2e/subscriptions/specChange-subscription.cy.ts index 4d344397ca03..2a0318bc6368 100644 --- a/packages/app/cypress/e2e/subscriptions/specChange-subscription.cy.ts +++ b/packages/app/cypress/e2e/subscriptions/specChange-subscription.cy.ts @@ -324,14 +324,14 @@ e2e: { cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.spec.{js,ts}') cy.get('[data-cy="file-match-indicator"]') - .should('contain', '23 Matches') + .should('contain', '23 matches') cy.withCtx(async (ctx, o) => { await ctx.actions.file.writeFileInProject(o.path, '') }, { path: getPathForPlatform('cypress/e2e/new-file.spec.js') }) cy.get('[data-cy="file-match-indicator"]') - .should('contain', '24 Matches') + .should('contain', '24 matches') }) it('responds to specChange event for a removed file', () => { @@ -341,14 +341,14 @@ e2e: { cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.spec.{js,ts}') cy.get('[data-cy="file-match-indicator"]') - .should('contain', '23 Matches') + .should('contain', '23 matches') cy.withCtx(async (ctx, o) => { await ctx.actions.file.removeFileInProject(o.path) }, { path: getPathForPlatform('cypress/e2e/dom-list.spec.js') }) cy.get('[data-cy="file-match-indicator"]') - .should('contain', '22 Matches') + .should('contain', '22 matches') }) it('handles removing the last file', () => { @@ -387,7 +387,7 @@ e2e: { }) cy.get('[data-cy="file-match-indicator"]') - .should('contain', '1 Match') + .should('contain', '1 match') cy.withCtx(async (ctx, o) => { await ctx.actions.file.removeFileInProject(o.path) @@ -404,7 +404,7 @@ e2e: { cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.spec.{js,ts}') cy.get('[data-cy="file-match-indicator"]') - .should('contain', '23 Matches') + .should('contain', '23 matches') cy.withCtx(async (ctx) => { await ctx.actions.file.writeFileInProject('cypress.config.js', @@ -428,7 +428,7 @@ e2e: { }) cy.get('[data-cy="file-match-indicator"]', { timeout: 7500 }) - .should('contain', '2 Matches') + .should('contain', '2 matches') }) }) }) diff --git a/packages/app/cypress/e2e/top-nav.cy.ts b/packages/app/cypress/e2e/top-nav.cy.ts index 47b546b63291..330e5f0796b1 100644 --- a/packages/app/cypress/e2e/top-nav.cy.ts +++ b/packages/app/cypress/e2e/top-nav.cy.ts @@ -261,7 +261,7 @@ describe('App Top Nav Workflows', () => { it('shows popover with additional doc links', () => { cy.get('@docsButton').click().should('have.attr', 'aria-expanded', 'true') - cy.findByRole('heading', { name: 'Getting Started', level: 2 }) + cy.findByRole('heading', { name: 'Getting started', level: 2 }) cy.findByRole('heading', { name: 'References', level: 2 }) cy.findByRole('heading', { name: 'Run in CI/CD', level: 2 }) @@ -275,11 +275,11 @@ describe('App Top Nav Workflows', () => { href: 'https://on.cypress.io/testing-your-app?utm_medium=Docs+Menu&utm_content=Testing+Your+App&utm_source=Binary%3A+App', }, { - name: 'Organizing Tests', + name: 'Organizing tests', href: 'https://on.cypress.io/writing-and-organizing-tests?utm_medium=Docs+Menu&utm_content=Organizing+Tests&utm_source=Binary%3A+App', }, { - name: 'Best Practices', + name: 'Best practices', href: 'https://on.cypress.io/best-practices?utm_medium=Docs+Menu&utm_content=Best+Practices&utm_source=Binary%3A+App', }, { @@ -331,7 +331,7 @@ describe('App Top Nav Workflows', () => { cy.loginUser() cy.visitApp() - cy.findByTestId('app-header-bar').findByRole('button', { name: 'Profile and Log Out', expanded: false }).as('logInButton') + cy.findByTestId('app-header-bar').findByRole('button', { name: 'Profile and logout', expanded: false }).as('logInButton') }) it('shows user in top nav when logged in', () => { @@ -357,9 +357,9 @@ describe('App Top Nav Workflows', () => { }) }) - cy.findByRole('button', { name: 'Log Out' }).click() + cy.findByRole('button', { name: 'Log out' }).click() - cy.findByTestId('app-header-bar').findByText('Log In').should('be.visible') + cy.findByTestId('app-header-bar').findByText('Log in').should('be.visible') }) it('logouts user if cloud request returns unauthorized', () => { @@ -388,7 +388,7 @@ describe('App Top Nav Workflows', () => { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() }) }) }) @@ -426,18 +426,18 @@ describe('App Top Nav Workflows', () => { function logIn ({ expectedNextStepText, displayName }) { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).as('logInModal').within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() - // The Log In button transitions through a few states as the browser launch lifecycle completes - cy.findByRole('button', { name: 'Opening Browser' }).should('be.visible').and('be.disabled') + // The Log in button transitions through a few states as the browser launch lifecycle completes + cy.findByRole('button', { name: 'Opening browser' }).should('be.visible').and('be.disabled') cy.findByRole('button', { name: 'Waiting for you to log in' }).should('be.visible').and('be.disabled') }) - cy.findByRole('dialog', { name: 'Login Successful' }).within(() => { + cy.findByRole('dialog', { name: 'Login successful' }).within(() => { cy.findByText('You are now logged in as', { exact: false }).should('be.visible') cy.validateExternalLink({ name: displayName, href: 'https://on.cypress.io/dashboard/profile' }) @@ -509,11 +509,11 @@ describe('App Top Nav Workflows', () => { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() cy.contains('http://127.0.0.1:0000/redirect-to-auth').should('be.visible') cy.contains(loginText.titleBrowserError).should('be.visible') @@ -541,11 +541,11 @@ describe('App Top Nav Workflows', () => { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() cy.contains(loginText.titleFailed).should('be.visible') cy.contains(loginText.bodyError).should('be.visible') @@ -591,11 +591,11 @@ describe('App Top Nav Workflows', () => { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).as('loginButton').click() + cy.findByRole('button', { name: 'Log in' }).as('loginButton').click() }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() cy.contains(loginText.titleFailed).should('be.visible') cy.contains(loginText.bodyError).should('be.visible') @@ -628,11 +628,11 @@ describe('App Top Nav Workflows', () => { cy.findByTestId('app-header-bar').within(() => { cy.findByTestId('user-avatar-title').should('not.exist') - cy.findByRole('button', { name: 'Log In' }).as('loginButton').click() + cy.findByRole('button', { name: 'Log in' }).as('loginButton').click() }) cy.findByRole('dialog', { name: 'Log in to Cypress' }).within(() => { - cy.findByRole('button', { name: 'Log In' }).click() + cy.findByRole('button', { name: 'Log in' }).click() cy.contains(loginText.titleFailed).should('be.visible') cy.contains(loginText.bodyError).should('be.visible') cy.contains('An unexpected error occurred').should('be.visible') diff --git a/packages/app/src/components/FileMatch.cy.tsx b/packages/app/src/components/FileMatch.cy.tsx index 8ec23e763b05..fc9cd872d48e 100644 --- a/packages/app/src/components/FileMatch.cy.tsx +++ b/packages/app/src/components/FileMatch.cy.tsx @@ -158,27 +158,27 @@ describe('', { viewportWidth: 600, viewportHeight: 300 }, () => { const matchesData: Record = { all: [ { matches: { found: 10, total } }, - '10 Matches', + '10 matches', ], 'ignores numerator when file pattern isn\'t searched': [ { matches: { found: 9, total } }, - '10 Matches', + '10 matches', ], 'shows numerator when file pattern is searched': [ { matches: { found: 9, total }, pattern: 'A Pattern', extensionPattern: '*.tsx' }, - '9 of 10 Matches', + '9 of 10 matches', ], one: [ { matches: { found: 1, total }, pattern: 'A Pattern', extensionPattern: '*.tsx' }, - '1 of 10 Matches', + '1 of 10 matches', ], 'one without a pattern': [ { matches: { found: 1, total } }, - '1 Match', + '1 match', ], 'no matches': [ { matches: { found: 0, total: 0 } }, - 'No Matches', + 'No matches', ], } diff --git a/packages/app/src/components/SpecPatterns.cy.tsx b/packages/app/src/components/SpecPatterns.cy.tsx index c7a4e0b526e0..399ad11db717 100644 --- a/packages/app/src/components/SpecPatterns.cy.tsx +++ b/packages/app/src/components/SpecPatterns.cy.tsx @@ -8,7 +8,7 @@ describe('', () => { }) cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.cy.{js,jsx,ts,tsx}') - cy.get('[data-cy="file-match-indicator"]').contains('50 Matches') + cy.get('[data-cy="file-match-indicator"]').contains('50 matches') cy.percySnapshot() }) @@ -27,7 +27,7 @@ describe('', () => { }) cy.get('[data-cy="spec-pattern"]').contains('**/*.cy.{js,jsx,ts,tsx}') - cy.get('[data-cy="file-match-indicator"]').contains('50 Matches') + cy.get('[data-cy="file-match-indicator"]').contains('50 matches') }) it('renders component spec pattern should not show matches verbiage', () => { @@ -47,7 +47,7 @@ describe('', () => { cy.get('[data-cy="file-match-indicator"]').should('contain', 'specPattern') }) - it('displays `No Matches` when specs are empty', () => { + it('displays `No matches` when specs are empty', () => { cy.mountFragment(SpecPatternsFragmentDoc, { onResult: (res) => { if (!res) { @@ -60,7 +60,7 @@ describe('', () => { render: (gql) =>
, }) - cy.get('[data-cy="file-match-indicator"]').contains('No Matches') + cy.get('[data-cy="file-match-indicator"]').contains('No matches') }) it('displays `1 Match` when specs has 1 element', () => { @@ -76,6 +76,6 @@ describe('', () => { render: (gql) =>
, }) - cy.get('[data-cy="file-match-indicator"]').contains('1 Match') + cy.get('[data-cy="file-match-indicator"]').contains('1 match') }) }) diff --git a/packages/app/src/runner/SnapshotControls.cy.tsx b/packages/app/src/runner/SnapshotControls.cy.tsx index 126d656ade43..86dd662a76e9 100644 --- a/packages/app/src/runner/SnapshotControls.cy.tsx +++ b/packages/app/src/runner/SnapshotControls.cy.tsx @@ -100,7 +100,7 @@ describe('SnapshotControls', { viewportHeight: 200, viewportWidth: 500 }, () => snapshotStore.setTestsRunningError() cy.get('body') - .findByText('Cannot show Snapshot while tests are running') + .findByText('Cannot show snapshot while tests are running') .should('be.visible') }) diff --git a/packages/app/src/runner/selector-playground/SelectorPlayground.cy.tsx b/packages/app/src/runner/selector-playground/SelectorPlayground.cy.tsx index 0770461c3eb5..571eb275fa19 100644 --- a/packages/app/src/runner/selector-playground/SelectorPlayground.cy.tsx +++ b/packages/app/src/runner/selector-playground/SelectorPlayground.cy.tsx @@ -59,7 +59,7 @@ describe('SelectorPlayground', () => { cy.spy(autIframe, 'toggleSelectorHighlight') expect(selectorPlaygroundStore.method).to.eq('get') - cy.get('[aria-label="Selector Methods"]').click() + cy.get('[aria-label="Selector methods"]').click() cy.findByRole('menuitem', { name: 'cy.contains' }).click().then(() => { expect(selectorPlaygroundStore.method).to.eq('contains') expect(autIframe.toggleSelectorHighlight).to.have.been.called @@ -74,15 +74,15 @@ describe('SelectorPlayground', () => { selectorPlaygroundStore.setNumElements(0) mountSelectorPlayground() - cy.get('[data-cy="playground-num-elements"]').contains('No Matches') + cy.get('[data-cy="playground-num-elements"]').contains('No matches') cy.then(() => selectorPlaygroundStore.setNumElements(1)) - cy.get('[data-cy="playground-num-elements"]').contains('1 Match') + cy.get('[data-cy="playground-num-elements"]').contains('1 match') cy.then(() => selectorPlaygroundStore.setNumElements(10)) - cy.get('[data-cy="playground-num-elements"]').contains('10 Matches') + cy.get('[data-cy="playground-num-elements"]').contains('10 matches') cy.percySnapshot() diff --git a/packages/app/src/runs/CloudConnectButton.cy.tsx b/packages/app/src/runs/CloudConnectButton.cy.tsx index 100c229de39d..09fee431c18c 100644 --- a/packages/app/src/runs/CloudConnectButton.cy.tsx +++ b/packages/app/src/runs/CloudConnectButton.cy.tsx @@ -75,6 +75,6 @@ describe('', () => { cy.contains('button', 'Connect your project').click() cy.get('[role="dialog"]').should('be.visible') - cy.get('[role="dialog"] h2').should('contain', 'Connect Project') + cy.get('[role="dialog"] h2').should('contain', 'Connect project') }) }) diff --git a/packages/app/src/runs/modals/SelectCloudProjectModal.vue b/packages/app/src/runs/modals/SelectCloudProjectModal.vue index d7dd728c00e6..64b9c382529c 100644 --- a/packages/app/src/runs/modals/SelectCloudProjectModal.vue +++ b/packages/app/src/runs/modals/SelectCloudProjectModal.vue @@ -160,6 +160,7 @@ size="lg" :prefix-icon="newProject ? CreateIcon : ConnectIcon" prefix-icon-class="icon-dark-white" + data-cy="connect-project" @click="createOrConnectProject" > {{ newProject diff --git a/packages/app/src/settings/SettingsContainer.cy.tsx b/packages/app/src/settings/SettingsContainer.cy.tsx index 76a766cef461..e29285f95dfb 100644 --- a/packages/app/src/settings/SettingsContainer.cy.tsx +++ b/packages/app/src/settings/SettingsContainer.cy.tsx @@ -15,36 +15,36 @@ describe('', { viewportHeight: 800, viewportWidth: 900 }, ( }) it('expands and collapses project settings', () => { - cy.contains('Project Settings').click() + cy.contains('Project settings').click() cy.findByText(defaultMessages.settingsPage.experiments.title).scrollIntoView().should('be.visible') cy.findByText(defaultMessages.settingsPage.specPattern.title).scrollIntoView().should('be.visible') cy.findByText(defaultMessages.settingsPage.config.title).scrollIntoView().should('be.visible') cy.percySnapshot() - cy.findByText('Project Settings').click() + cy.findByText('Project settings').click() cy.findByText(defaultMessages.settingsPage.experiments.title).should('not.exist') }) it('expands and collapses device settings', () => { - cy.contains('Device Settings').click() + cy.contains('Device settings').click() cy.findByText(defaultMessages.settingsPage.editor.title).should('be.visible') cy.findByText(defaultMessages.settingsPage.proxy.title).should('be.visible') cy.findByText(defaultMessages.settingsPage.testingPreferences.title).should('be.visible') cy.percySnapshot() - cy.findByText('Device Settings').click() + cy.findByText('Device settings').click() cy.findByText(defaultMessages.settingsPage.editor.title).should('not.exist') }) it('expands and collapses cloud settings', () => { - cy.contains('Dashboard Settings').click() + cy.contains('Dashboard settings').click() cy.findByText(defaultMessages.settingsPage.projectId.title).scrollIntoView().should('be.visible') cy.percySnapshot() - cy.findByText('Dashboard Settings').click() + cy.findByText('Dashboard settings').click() cy.findByText(defaultMessages.settingsPage.projectId.title).should('not.exist') }) diff --git a/packages/app/src/settings/device/ProxySettings.cy.tsx b/packages/app/src/settings/device/ProxySettings.cy.tsx index d050d5c5ac13..68a52ea5396c 100644 --- a/packages/app/src/settings/device/ProxySettings.cy.tsx +++ b/packages/app/src/settings/device/ProxySettings.cy.tsx @@ -15,10 +15,10 @@ describe('', { render: (gql) =>
, }) - cy.findByText('Proxy Bypass List') + cy.findByText('Proxy bypass list') .get('[data-testid=bypass-list]').should('have.text', 'proxy-bypass') - cy.findByText('Proxy Server') + cy.findByText('Proxy server') .get('[data-testid=proxy-server]').should('have.text', 'proxy-server') cy.percySnapshot() @@ -40,10 +40,10 @@ describe('', { render: (gql) =>
, }) - cy.findByText('Proxy Bypass List') + cy.findByText('Proxy bypass list') .get('[data-testid=bypass-list]').should('have.text', '-') - cy.findByText('Proxy Server') + cy.findByText('Proxy server') .get('[data-testid=proxy-server]').should('have.text', '-') }) }) diff --git a/packages/app/src/settings/project/CloudSettings.cy.tsx b/packages/app/src/settings/project/CloudSettings.cy.tsx index 8abc31705e31..e04b9a69704a 100644 --- a/packages/app/src/settings/project/CloudSettings.cy.tsx +++ b/packages/app/src/settings/project/CloudSettings.cy.tsx @@ -3,7 +3,7 @@ import { CloudSettingsFragmentDoc } from '../../generated/graphql-test' import CloudSettings from './CloudSettings.vue' describe('', () => { - it('displays the project Id and record key sections', () => { + it('displays the project Id and Record Key sections', () => { cy.mountFragment(CloudSettingsFragmentDoc, { render: (gqlVal) => { @@ -45,7 +45,7 @@ describe('', () => { cy.percySnapshot() }) - it('hides record key when not present', () => { + it('hides Record Key when not present', () => { cy.mountFragment(CloudSettingsFragmentDoc, { onResult (ctx) { if (ctx.currentProject?.cloudProject?.__typename === 'CloudProject') { diff --git a/packages/app/src/settings/project/RecordKey.cy.tsx b/packages/app/src/settings/project/RecordKey.cy.tsx index 3bc2c5313c12..d1189bd0ddf3 100644 --- a/packages/app/src/settings/project/RecordKey.cy.tsx +++ b/packages/app/src/settings/project/RecordKey.cy.tsx @@ -19,12 +19,12 @@ describe('', () => { }) }) - it('renders the record key view with the correct title', () => { - cy.findByText('Record Key') + it('renders the Record Key view with the correct title', () => { + cy.findByText('Record key') }) it(`has an input that's hidden by default`, () => { - cy.get('code').as('Record Key Input') + cy.get('code').as('Record key input') .should('be.visible') .contains('code', key).should('not.exist') .get('[aria-label="Record Key Visibility Toggle"]').as('Password Toggle') diff --git a/packages/app/src/settings/project/SpecPatterns.cy.tsx b/packages/app/src/settings/project/SpecPatterns.cy.tsx index 1144b0cd65af..09e6d3e281c7 100644 --- a/packages/app/src/settings/project/SpecPatterns.cy.tsx +++ b/packages/app/src/settings/project/SpecPatterns.cy.tsx @@ -15,7 +15,7 @@ describe('', () => { cy.contains('h2', defaultMessages.settingsPage.specPattern.title) cy.contains('code', 'specPattern') cy.contains('p', defaultMessages.settingsPage.specPattern.description.replace('{0}', 'Learn more')) - cy.get('[data-cy="file-match-indicator"]').contains('50 Matches') + cy.get('[data-cy="file-match-indicator"]').contains('50 matches') cy.get('[data-cy="spec-pattern"]').contains('cypress/e2e/**/*.cy.{js,jsx,ts,tsx}') cy.get('[data-cy="external"]').should('have.attr', 'href').and('eq', 'https://on.cypress.io/test-type-options') diff --git a/packages/app/src/specs/InlineSpecList.cy.tsx b/packages/app/src/specs/InlineSpecList.cy.tsx index 7d89ce3b4161..1d721a30db61 100644 --- a/packages/app/src/specs/InlineSpecList.cy.tsx +++ b/packages/app/src/specs/InlineSpecList.cy.tsx @@ -63,7 +63,7 @@ describe('InlineSpecList', () => { it('should open CreateSpec modal', () => { mountInlineSpecList() - const newSpecSelector = `[aria-label="New Spec"]` + const newSpecSelector = `[aria-label="New spec"]` cy.get(newSpecSelector).click() cy.contains(defaultMessages.createSpec.newSpecModalTitle).should('be.visible') diff --git a/packages/app/src/specs/InlineSpecListHeader.cy.tsx b/packages/app/src/specs/InlineSpecListHeader.cy.tsx index 46268e91476c..d4949f2ad57a 100644 --- a/packages/app/src/specs/InlineSpecListHeader.cy.tsx +++ b/packages/app/src/specs/InlineSpecListHeader.cy.tsx @@ -57,13 +57,13 @@ describe('InlineSpecListHeader', () => { it('exposes the result count correctly to assistive tech', () => { mountWithResultCount(0) - cy.contains('No Matches') + cy.contains('No matches') .should('have.class', 'sr-only') .and('have.attr', 'aria-live', 'polite') mountWithResultCount(1) - cy.contains('1 Match').should('have.class', 'sr-only') + cy.contains('1 match').should('have.class', 'sr-only') mountWithResultCount(100) - cy.contains('100 Matches').should('have.class', 'sr-only') + cy.contains('100 matches').should('have.class', 'sr-only') }) }) diff --git a/packages/app/src/specs/SpecsList.cy.tsx b/packages/app/src/specs/SpecsList.cy.tsx index 4ea7ccceb132..b3576437fdf6 100644 --- a/packages/app/src/specs/SpecsList.cy.tsx +++ b/packages/app/src/specs/SpecsList.cy.tsx @@ -215,17 +215,17 @@ describe('', { keystrokeDelay: 0 }, () => { cy.contains('button', defaultMessages.createSpec.viewSpecPatternButton) .as('resultsCount') - .should('contain.text', '0 of 50 Matches') + .should('contain.text', '0 of 50 matches') // confirm results clear correctly cy.contains('button', defaultMessages.noResults.clearSearch).click() cy.get('@resultsCount') - .should('contain.text', '50 Matches') + .should('contain.text', '50 matches') // the exact wording here can be deceptive so confirm it's not still // displaying "of", since X of 50 Matches would pass for containing "50 matches" // but would be wrong. - .should('not.contain.text', 'of 50 Matches') + .should('not.contain.text', 'of 50 matches') }) it('calls gql mutation to save updated filter', () => { diff --git a/packages/app/src/specs/SpecsListHeader.cy.tsx b/packages/app/src/specs/SpecsListHeader.cy.tsx index ce87349e66b5..478f7dedbfe8 100644 --- a/packages/app/src/specs/SpecsListHeader.cy.tsx +++ b/packages/app/src/specs/SpecsListHeader.cy.tsx @@ -92,19 +92,19 @@ describe('', { keystrokeDelay: 0 }, () => { } mountWithSpecCount(0) - cy.contains('No Matches') + cy.contains('No matches') .should('be.visible') .and('have.attr', 'aria-live', 'polite') - cy.percySnapshot('No Matches') + cy.percySnapshot('No matches') mountWithSpecCount(1) - cy.contains('1 Match').should('be.visible') + cy.contains('1 match').should('be.visible') cy.percySnapshot('Singular Match') mountWithSpecCount(100) - cy.contains('100 Matches').should('be.visible') + cy.contains('100 matches').should('be.visible') cy.percySnapshot('Plural Match') }) @@ -119,19 +119,19 @@ describe('', { keystrokeDelay: 0 }, () => { } mountWithCounts(0, 0) - cy.contains('No Matches') + cy.contains('No matches') mountWithCounts(0, 22) - cy.contains('0 of 22 Matches') + cy.contains('0 of 22 matches') mountWithCounts(0, 1) - cy.contains('0 of 1 Match').should('be.visible') + cy.contains('0 of 1 match').should('be.visible') mountWithCounts(1, 1) - cy.contains('1 of 1 Match').should('be.visible') + cy.contains('1 of 1 match').should('be.visible') mountWithCounts(5, 22) - cy.contains('5 of 22 Matches').should('be.visible') + cy.contains('5 of 22 matches').should('be.visible') cy.percySnapshot() }) diff --git a/packages/app/src/specs/generators/FileChooser.cy.tsx b/packages/app/src/specs/generators/FileChooser.cy.tsx index 09f0c729cfd1..98f36a501b28 100644 --- a/packages/app/src/specs/generators/FileChooser.cy.tsx +++ b/packages/app/src/specs/generators/FileChooser.cy.tsx @@ -60,17 +60,17 @@ describe('', () => { describe('matches', () => { it('displays the total number of file matches', () => { cy.mount(() => ()) - .get(fileMatchIndicatorSelector).should('contain.text', `${allFiles.length } Matches`) + .get(fileMatchIndicatorSelector).should('contain.text', `${allFiles.length } matches`) }) it('handles pluralization', () => { cy.mount(() => ()) - .get(fileMatchIndicatorSelector).should('contain.text', `${1 } Match`) + .get(fileMatchIndicatorSelector).should('contain.text', `${1 } match`) }) it('handles no matches', () => { cy.mount(() => ()) - .get(fileMatchIndicatorSelector).should('contain.text', 'No Matches') + .get(fileMatchIndicatorSelector).should('contain.text', 'No matches') }) it('updates the number of files found out of the total number available', () => { @@ -86,15 +86,15 @@ describe('', () => { // Figure out how many files were actually matched and make sure // that they're out of the total files passed in cy.get(fileMatchIndicatorSelector) - .should('contain.text', `${$rows.length} of ${allFiles.length} Matches`) + .should('contain.text', `${$rows.length} of ${allFiles.length} matches`) // Get back to an empty state where all files are shown .get(filenameInputSelector).clear() - .get(fileMatchIndicatorSelector).should('contain.text', `${allFiles.length } Matches`) + .get(fileMatchIndicatorSelector).should('contain.text', `${allFiles.length } matches`) // Go to the no matches state .get(filenameInputSelector).type(nonExistentFileName, { delay: 0 }) - .get(fileMatchIndicatorSelector).should('contain.text', 'No Matches') + .get(fileMatchIndicatorSelector).should('contain.text', 'No matches') }) }) }) diff --git a/packages/errors/__snapshot-html__/DASHBOARD_GRAPHQL_ERROR.html b/packages/errors/__snapshot-html__/DASHBOARD_GRAPHQL_ERROR.html index 413cee104d0c..a67930f5522b 100644 --- a/packages/errors/__snapshot-html__/DASHBOARD_GRAPHQL_ERROR.html +++ b/packages/errors/__snapshot-html__/DASHBOARD_GRAPHQL_ERROR.html @@ -34,7 +34,7 @@ -
We received an unexpected error response from the request to the Cypress dashboard:
+    
We received an unexpected error response from the request to the Cypress Dashboard:
 
 "fail whale"
 
diff --git a/packages/errors/__snapshot-html__/DASHBOARD_RECORD_KEY_NOT_VALID.html b/packages/errors/__snapshot-html__/DASHBOARD_RECORD_KEY_NOT_VALID.html
index 59ef0c222877..1583c8ae4003 100644
--- a/packages/errors/__snapshot-html__/DASHBOARD_RECORD_KEY_NOT_VALID.html
+++ b/packages/errors/__snapshot-html__/DASHBOARD_RECORD_KEY_NOT_VALID.html
@@ -38,7 +38,7 @@
 
 It may have been recently revoked by you or another user.
 
-Please log into the Dashboard to see the valid record keys.
+Please log into the Dashboard to see the valid Record Keys.
 
 https://on.cypress.io/dashboard/projects/project-id-123
 
\ No newline at end of file diff --git a/packages/errors/src/errors.ts b/packages/errors/src/errors.ts index 456915870395..096043e12a2a 100644 --- a/packages/errors/src/errors.ts +++ b/packages/errors/src/errors.ts @@ -483,7 +483,7 @@ export const AllCypressErrors = { It may have been recently revoked by you or another user. - Please log into the Dashboard to see the valid record keys. + Please log into the Dashboard to see the valid Record Keys. https://on.cypress.io/dashboard/projects/${fmt.off(projectId)}` }, @@ -1425,7 +1425,7 @@ export const AllCypressErrors = { DASHBOARD_GRAPHQL_ERROR: (err: Error) => { return errTemplate` - We received an unexpected error response from the request to the Cypress dashboard: + We received an unexpected error response from the request to the Cypress Dashboard: ${fmt.stringify(err.message)} ` diff --git a/packages/frontend-shared/src/gql-components/RecordPrompt.cy.tsx b/packages/frontend-shared/src/gql-components/RecordPrompt.cy.tsx index bfb3ddd61965..334b55d6d1ef 100644 --- a/packages/frontend-shared/src/gql-components/RecordPrompt.cy.tsx +++ b/packages/frontend-shared/src/gql-components/RecordPrompt.cy.tsx @@ -13,13 +13,13 @@ describe('RecordPrompt', () => { cy.findByDisplayValue('npx cypress run --component --record --key ').should('be.visible') }) - it('renders with record key', () => { + it('renders with Record Key', () => { cy.mount() cy.findByDisplayValue('npx cypress run --record --key abc-123').should('be.visible') }) - it('renders with record key for component testing', () => { + it('renders with Record Key for component testing', () => { cy.mount() cy.findByDisplayValue('npx cypress run --component --record --key abc-123').should('be.visible') diff --git a/packages/frontend-shared/src/locales/en-US.json b/packages/frontend-shared/src/locales/en-US.json index b8795a557eeb..a748db82443d 100644 --- a/packages/frontend-shared/src/locales/en-US.json +++ b/packages/frontend-shared/src/locales/en-US.json @@ -13,8 +13,8 @@ "noMatchesForFileName": "", "byFilenameInput": "Search by filename...", "byExtensionInput": "Extensions to include e.g. *.tsx, *.vue", - "matchesIndicatorEmptyFileSearch": "No Matches | 1 Match | { denominator } Matches", - "matchesIndicator": "No Matches | {numerator} of {denominator} Matches | {numerator} of {denominator} Matches" + "matchesIndicatorEmptyFileSearch": "No matches | 1 match | { denominator } matches", + "matchesIndicator": "No matches | {numerator} of {denominator} matches | {numerator} of {denominator} matches" }, "button": { "cancel": "Cancel", @@ -22,7 +22,7 @@ }, "loading": { "config": { - "title": "Initializing Config...", + "title": "Initializing config...", "description": "Please wait while we load your project and find browsers installed on your system" } }, @@ -33,7 +33,7 @@ "dismissAriaLabel": "Dismiss" }, "specPattern": { - "matches": "No Matches | {n} Match | {n} Matches" + "matches": "No matches | {n} match | {n} matches" }, "specPatternModal": { "title": "Spec pattern settings" @@ -58,10 +58,10 @@ "disabled": "Disabled" }, "createSpec": { - "newSpec": "New Spec", - "createSpec": "Create Spec", + "newSpec": "New spec", + "createSpec": "Create spec", "done": "Done!", - "updateSpecPattern": "Update Spec Pattern", + "updateSpecPattern": "Update spec pattern", "newSpecModalTitle": "Create a new spec", "successPage": { "header": "Great! The spec was successfully added", @@ -79,7 +79,7 @@ } }, "customPatternNoSpecs": { - "title": "No Specs Found", + "title": "No specs found", "description": "We couldn't find any files matching the following spec patterns. You may need to move your specs or update your {0} to find them." } }, @@ -91,7 +91,7 @@ "description": "We'll generate several example specs to help guide you on how to write tests in Cypress.", "specsAddedHeader": "Great! We added the following files to your project:", "specsAddedButton": "Okay, I got it!", - "specsAddingHeader": "Adding Specs..." + "specsAddingHeader": "Adding specs..." }, "importEmptySpec": { "header": "Create new empty spec", @@ -117,8 +117,8 @@ }, "specPage": { "pageTitle": "Specs", - "newSpecButton": "New Spec", - "searchPlaceholder": "Search Specs", + "newSpecButton": "New spec", + "searchPlaceholder": "Search specs", "clearSearch": "Clear search field", "componentSpecsHeader": "Component specs", "e2eSpecsHeader": "E2E specs", @@ -221,11 +221,11 @@ }, "noResults": { "defaultMessage": "No results matched your search:", - "clearSearch": "Clear Search" + "clearSearch": "Clear search" }, "sidebar": { "keyboardShortcuts": { - "title": "Keyboard Shortcuts", + "title": "Keyboard shortcuts", "rerun": "Re-run tests", "stop": "Stop tests", "toggle": "Toggle specs list" @@ -247,12 +247,12 @@ "runningOldVersion": "You're currently running an old version of Cypress. Update to the latest version for the best experience.", "docsMenu": { "docsHeading": "Docs", - "gettingStartedTitle": "Getting Started", + "gettingStartedTitle": "Getting started", "firstTest": "Write your first test", "testingApp": "Testing your app", - "organizingTests": "Organizing Tests", + "organizingTests": "Organizing tests", "referencesTitle": "References", - "bestPractices": "Best Practices", + "bestPractices": "Best practices", "configuration": "Configuration", "api": "API", "ciTitle": "Run in CI/CD", @@ -262,7 +262,7 @@ "ci1": { "title": "Configure CI", "description": "Optimize your tests in CI by following these guides.", - "seeOtherGuides": "See Other Guides", + "seeOtherGuides": "See other guides", "intro": "Introduction to CI", "learnTheBasics": "Learn the basics of running Cypress in CI." }, @@ -286,16 +286,16 @@ "bodyError": "An error occurred while attempting to log in:", "bodyBrowserError": "The browser could not be opened.", "bodyBrowserErrorDetails": "Cypress was unable to open your installed browser. To continue logging in, please paste this URL into your web browser:", - "cloud": "Cypress Dashboard Service", + "cloud": "Cypress Dashboard service", "titleInitial": "Log in to Cypress", - "titleSuccess": "Login Successful", - "titleFailed": "Login Failed", - "titleBrowserError": "Browser Error", - "actionLogin": "Log In", - "profileMenuLabel": "Profile and Log Out", - "actionLogout": "Log Out", + "titleSuccess": "Login successful", + "titleFailed": "Login failed", + "titleBrowserError": "Browser error", + "actionLogin": "Log in", + "profileMenuLabel": "Profile and logout", + "actionLogout": "Log out", "actionContinue": "Continue", - "actionOpening": "Opening Browser", + "actionOpening": "Opening browser", "actionWaiting": "Waiting for you to log in", "actionTryAgain": "Try again", "actionCancel": "Cancel" @@ -319,15 +319,15 @@ "stackTraceLabel": "Stack trace", "docsButton": { "configGuide": { - "text": "Configuration Guide", + "text": "Configuration guide", "link": "https://docs.cypress.io/guides/references/configuration" }, "dashboardGuide": { - "text": "Cypress Dashboard Guide", + "text": "Cypress Dashboard guide", "link": "https://docs.cypress.io/guides/dashboard/introduction" }, "docsHomepage": { - "text": "Cypress Docs", + "text": "Cypress docs", "link": "https://docs.cypress.io" } } @@ -340,25 +340,25 @@ }, "setupPage": { "projectSetup": { - "frameworkLabel": "Front-end Framework", + "frameworkLabel": "Front-end framework", "frameworkPlaceholder": "Pick a framework", "bundlerLabel": "Bundler", - "bundlerLabelDescription": "(Dev Server)", + "bundlerLabelDescription": "(dev server)", "bundlerPlaceholder": "Pick a bundler", "languageLabel": "Language", - "configFileLanguageLabel": "Cypress Config File", + "configFileLanguageLabel": "Cypress config file", "detected": "(detected)" }, "step": { "continue": "Continue", - "next": "Next Step", + "next": "Next step", "back": "Back", "skip": "Skip" }, "configFile": { "createManually": "Create file manually", "skippedLabel": "Skipped", - "changesRequiredLabel": "Changes Required", + "changesRequiredLabel": "Changes required", "changesRequiredBadge": "Changes required", "changesRequiredDescription": "Please merge the code below with your existing {0}" }, @@ -366,54 +366,54 @@ "configured": "Configured", "notConfigured": "Not Configured", "running": "Running", - "chooseABrowser": "Choose a Browser", + "chooseABrowser": "Choose a browser", "reconfigure": "Reconfigure", "disabled": "Disabled" } }, "globalPage": { "empty": { - "title": "Add Project", + "title": "Add project", "helper": "Get started by adding your first project below.", "dropText": "Drag your project directory here or {0}", "browseManually": "browse manually." }, "settings": "Settings", - "saveChanges": "Save Changes", + "saveChanges": "Save changes", "cancel": "Cancel", - "externalEditorPreferences": "External Editor Preferences", + "externalEditorPreferences": "External editor preferences", "externalEditorPreferencesDescription1": "Select your preference for opening files on your system.", "externalEditorPreferencesDescription2": "You can change this later in the {0} page.", - "recentProjectsHeader": "Recent Projects", + "recentProjectsHeader": "Recent projects", "searchPlaceholder": "Search projects", - "addProjectButton": "Add Project", - "projectActions": "Project Actions", - "removeProject": "Remove Project", - "openInIDE": "Open In IDE", - "openInFinder": "Open In Finder", + "addProjectButton": "Add project", + "projectActions": "Project actions", + "removeProject": "Remove project", + "openInIDE": "Open in IDE", + "openInFinder": "Open in Finder", "noResultsMessage": "No projects matched your search:" }, "welcomePage": { "review": "Review the differences between each testing type", - "codeExample": "Code Example", + "codeExample": "Code example", "compareTypes": { "content": { - "e2eTitle": "End-to-end Tests", + "e2eTitle": "End-to-end tests", "e2eBullet1": "Visit URLs via", "e2eBullet2": "Test flows and functionality across multiple pages", "e2eBullet3": "Ideal for testing integrated flows in CD workflows", - "componentTitle": "Component Tests", + "componentTitle": "Component tests", "ctBullet1": "Import components via", "ctBullet2": "Test individual components of a design system in isolation", "ctBullet3": "Ideal for testing isolated flows and components in CI" }, - "modalTitle": "Key Differences" + "modalTitle": "Key differences" }, "title": "Welcome to Cypress!" }, "settingsPage": { "config": { - "title": "Resolved Configuration", + "title": "Resolved configuration", "description": "Since the options in the {0} can be set dynamically by your development environment, please refer to the legend below to understand how the configuration options are resolved.", "legend": { "env": { @@ -439,13 +439,13 @@ } }, "proxy": { - "title": "Proxy Settings", + "title": "Proxy settings", "description": "Cypress auto-detected the following proxy settings from your operating system.", - "bypassList": "Proxy Bypass List", - "proxyServer": "Proxy Server" + "bypassList": "Proxy bypass list", + "proxyServer": "Proxy server" }, "editor": { - "title": "External Editor", + "title": "External editor", "description": "External editor to use for editing code opened when using Cypress.", "noEditorSelectedPlaceholder": "Choose your editor...", "customPathPlaceholder": "/path/to/editor" @@ -455,13 +455,13 @@ "description": "The Project ID configured for this project inside of Cypress Dashboard. {0}" }, "specPattern": { - "title": "Spec Patterns", - "description": "The globs pointing Cypress App to your spec files configured for this project. {0}" + "title": "Spec patterns", + "description": "The globs pointing Cypress to your spec files configured for this project. {0}" }, "recordKey": { - "title": "Record Key", + "title": "Record key", "description": "The Record Key configured for this project inside of Cypress Dashboard. {0}", - "manageKeys": "Manage Keys", + "manageKeys": "Manage keys", "errorEmpty": "You do not have permission to record on this project", "errorEmptyButton": "Request record rights", "errorAccess": "You do not have permission to view this project", @@ -473,38 +473,38 @@ "errorNotLoggedInButton": "Log in to the Cypress Dashboard" }, "project": { - "title": "Project Settings", + "title": "Project settings", "description": "Review the configuration settings currently in use for this project." }, "cloud": { - "title": "Dashboard Settings", + "title": "Dashboard settings", "description": "Review the configuration settings for recording to the Cypress Dashboard." }, "experiments": { "title": "Experiments", "description": "If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. {0}", "experimentalFetchPolyfill": { - "name": "Fetch Polyfill", + "name": "Fetch polyfill", "description": "Automatically replaces `window.fetch` with a polyfill that Cypress can spy on and stub. Note: `experimentalFetchPolyfill` has been deprecated in Cypress 6.0.0 and will be removed in a future release. Consider using [`cy.intercept()`](https://on.cypress.io/intercept) to intercept `fetch` requests instead." }, "experimentalInteractiveRunEvents": { - "name": "Interactive Run Events", + "name": "Interactive run events", "description": "Allows listening to the [`before:run`](https://on.cypress.io/before-run), [`after:run`](https://on.cypress.io/after-run), [`before:spec`](https://on.cypress.io/before-spec), and [`after:spec`](https://on.cypress.io/after-spec) events in plugins during interactive mode." }, "experimentalSessionAndOrigin": { - "name": "Cross-origin and Session", + "name": "Cross-origin and session", "description": "Enables cross-origin and improved session support, including the [`cy.origin()`](https://on.cypress.io/origin) and [`cy.session()`](https://on.cypress.io/session) commands." }, "experimentalModifyObstructiveThirdPartyCode": { - "name": "Modify Obstructive Third Party Code", + "name": "Modify obstructive third party code", "description": "Applies `modifyObstructiveCode` to third party `.html` and `.js`, removes subresource integrity, and modifies the user agent in Electron." }, "experimentalSingleTabRunMode": { - "name": "Single Tab Run Mode", + "name": "Single tab run mode", "description": "Runs all component specs in a single tab, trading spec isolation for faster run mode execution." }, "experimentalSourceRewriting": { - "name": "Source Rewriting", + "name": "Source rewriting", "description": "Enables AST-based JS/HTML rewriting. This may fix issues caused by the existing regex-based JS/HTML replacement algorithm. See [#5273](https://github.com/cypress-io/cypress/issues/5273) for details." }, "experimentalStudio": { @@ -517,50 +517,50 @@ } }, "device": { - "title": "Device Settings", + "title": "Device settings", "description": "Review the configuration settings currently in use for this device." }, "testingPreferences": { - "title": "Testing Preferences", + "title": "Testing preferences", "description": "Configure your testing environment with these flags", "autoScrollingEnabled": { - "title": "Auto Scrolling Enabled", + "title": "Auto scrolling enabled", "description": "Scroll behavior when running tests." } }, "footer": { "text": "You can reconfigure the {testingType} testing settings for this project if you're experiencing issues with your Cypress configuration.", - "button": "Configuration Guide", + "button": "Configuration guide", "buttonLink": "https://docs.cypress.io/guides/references/configuration" } }, "runs": { "connect": { "title": "View your recorded runs from the Cypress Dashboard", - "smartText": "Scale your test runs with built-in smart orchestration.", + "smartText": "Scale your test runs with built-in Smart Orchestration.", "debugText": "Debug tests that fail in CI with visual feedback.", "chartText": "Keep your tests in tip-top shape with powerful analytics.", "buttonUser": "Log in to the Cypress Dashboard", "buttonProject": "Connect your project to the Cypress Dashboard", "modal": { - "title": "Connect Project", + "title": "Connect project", "cancel": "Cancel", "createOrg": { "description": "You need to create an organization in the Cypress Dashboard to continue.", - "button": "Create Organization", + "button": "Create organization", "waitingButton": "Waiting for you to create an organization...", - "refreshButton": "Refresh Organizations List" + "refreshButton": "Refresh organizations list" }, "selectProject": { "organization": "Organization", "noOrganizationSelectedError": "required when creating a new project", "manageOrgs": "Manage organizations", "project": "Project", - "projectName": "Project Name", + "projectName": "Project name", "projectNameDisclaimer": "(You can change this later)", "createNewProject": "Create new", "chooseExistingProject": "Choose an existing project", - "newProjectAccess": "Project Access", + "newProjectAccess": "Project access", "privateLabel": "Private", "privateDescription": "Only invited users can view recorded test results.", "publicLabel": "Public", @@ -572,7 +572,7 @@ "placeholderProjectsPending": "Pick an organization first" }, "connectManually": { - "title": "Connect Project Manually", + "title": "Connect project manually", "warning": "We couldn't add the projectId to your cypress.config.js file automatically.", "mainMessage": "Manually add the {projectId} to the root of the config object in your {configFile} file.", "waitingButton": "Waiting for you to add the projectId..." @@ -580,7 +580,7 @@ }, "errors": { "baseError": { - "title": "Cypress Dashboard Error" + "title": "Cypress Dashboard error" }, "internalServerError": { "title": "Cannot connect to the Cypress Dashboard", @@ -613,7 +613,7 @@ "unauthorized": { "title": "Request access to view the recorded runs", "description": "This is a private project that you do not currently have access to. Please request access from the project owner in order to view the list of runs.", - "button": "Request Access" + "button": "Request access" }, "unauthorizedRequested": { "title": "Your access request for this project has been sent.", @@ -623,7 +623,7 @@ "connectionFailed": { "title": "Cannot connect to the Cypress Dashboard", "description": "The request times out when trying to retrieve the recorded runs from the Cypress Dashboard. Please refresh the page to try again and visit out {0} if this behavior continues.", - "link": "Support Page", + "link": "Support page", "button": "Try again" } } @@ -665,11 +665,11 @@ "line5": "We've changed the placement of component specs to be next to their source files (e.g. src/Button.jsx and src/Button.cy.jsx)", "line6": "The new default pattern of {0} prevents targeting conflicts with other testing frameworks. (e.g. Jest)", "label": "Choose from the following filename patterns:", - "option1": "{0} (Recommended)", + "option1": "{0} (recommended)", "option2": "Don't rename anything — keep what I have.", "option3": "Rename folder only.", "optOutAdditional": "I may need to change my {0} later if I don't use the recommended filename extension.", - "buttonSave": "Save Changes", + "buttonSave": "Save changes", "buttonCancel": "Cancel" } }, @@ -682,7 +682,7 @@ }, "renameSupport": { "title": "We'll automatically rename your existing E2E support file in this step", - "serveDifferentTypes": "We now serve different support files for E2E and component testing.", + "serveDifferentTypes": "We now serve different support files for E2E and Component Testing.", "changedSupportFile": "We've renamed the E2E support file from:" }, "configFile": { @@ -699,7 +699,7 @@ "line4": "In the next screen, you'll be able to reconfigure component testing in a new guided configuration wizard." }, "wizard": { - "title": "Migration Helper", + "title": "Migration helper", "description": "Complete the steps below to migrate your project to Cypress 10", "step1": { "title": "Migrate existing specs", @@ -740,11 +740,11 @@ }, "setupWizard": { "selectFramework": { - "title": "Project Setup", + "title": "Project setup", "description": "Confirm the front-end framework and bundler used in your project." }, "installDependencies": { - "title": "Install Dev Dependencies", + "title": "Install dev dependencies", "description": "Based on your previous selection, the following dependencies are required.", "pasteCommand": "Paste this command into your terminal to install the following packages:", "waitForInstall": "Waiting for you to install the dependencies...", @@ -753,22 +753,22 @@ "installationAlertSuccess": "You've successfully installed all required dependencies." }, "configFiles": { - "title": "Configuration Files", + "title": "Configuration files", "description": "We added the following files to your project:" }, "chooseBrowser": { - "title": "Choose a Browser", + "title": "Choose a browser", "description": "Choose your preferred browser for {testingType} testing." } }, "e2eProjectSetup": { - "title": "Project Setup", + "title": "Project setup", "description": "Confirm your project's preferred language." }, "openBrowser": { "startComponent": "Start Component Testing in {browser}", "startE2E": "Start E2E Testing in {browser}", - "openingComponent": "Opening Component Testing in {browser}", + "openingComponent": "Opening component testing in {browser}", "openingE2E": "Opening E2E Testing in {browser}", "running": "Running {browser}", "focus": "Focus", @@ -782,21 +782,21 @@ }, "snapshot": { "highlightsLabel": "Highlights", - "testsRunningError": "Cannot show Snapshot while tests are running", + "testsRunningError": "Cannot show snapshot while tests are running", "snapshotMissingError": "The snapshot is missing. Displaying current state of the DOM.", - "defaultTitle": "DOM Snapshot", + "defaultTitle": "DOM snapshot", "pinnedTitle": "Pinned", - "studioActiveError": "Cannot show Snapshot while creating commands in Studio" + "studioActiveError": "Cannot show snapshot while creating commands in Studio" }, "selectorPlayground": { - "matches": "No Matches | {n} Match | {n} Matches", + "matches": "No matches | {n} match | {n} matches", "playgroundTooltip": "Click an element to see a suggested selector", "copyTooltip": "Copy to clipboard", "copyTooltipAction": "Copied!", "printTooltip": "Print to console", "printTooltipAction": "Printed!", "invalidSelector": "Invalid", - "selectorMethodsLabel": "Selector Methods", + "selectorMethodsLabel": "Selector methods", "toggle": "Toggle playground" }, "automation": { @@ -823,19 +823,19 @@ "studio": "Studio", "studioDescription": "Generate Cypress commands by interacting with your site as an end user would. Then, save these commands directly to your test file.", "studioDetailedDescription": "Generate and save commands directly to your test suite by interacting with your app as an end user would. Right click on an element to add an assertion. Studio will track events that generate the following commands:", - "getStartedButton": "Get Started", + "getStartedButton": "Get started", "feedbackPrompt": "Your {0} will be highly influential to our team.", "experimentalMessage": "This feature is currently experimental and we will be adding more commands and abilities in the future.", "feedbackLink": "feedback", - "saveTest": "Save Test", - "testName": "Test Name", + "saveTest": "Save test", + "testName": "Test name", "saveTestButton": "Save", "closeStudio": "Close Studio", "restartStudio": "Restart Studio", - "copyCommands": "Copy Commands to Clipboard", - "commandsCopied": "Commands Copied!", + "copyCommands": "Copy commands to clipboard", + "commandsCopied": "Commands copied!", "availableCommands": "Available commands", - "giveFeedback": "Give Feedback", + "giveFeedback": "Give feedback", "enterValidUrl": "Enter a valid URL to visit", "continue": "Continue", "actionCancel": "Cancel" diff --git a/packages/graphql/schemas/cloud.graphql b/packages/graphql/schemas/cloud.graphql index 2ade51763c55..87341c15c882 100644 --- a/packages/graphql/schemas/cloud.graphql +++ b/packages/graphql/schemas/cloud.graphql @@ -291,7 +291,7 @@ union CloudProjectSpecFlakyResult = type CloudProjectSpecFlakyStatus { """ - URL linking to the flaky data in the Cypress dashboard for this spec + URL linking to the flaky data in the Cypress Dashboard for this spec """ dashboardUrl: String diff --git a/packages/graphql/schemas/schema.graphql b/packages/graphql/schemas/schema.graphql index 0fa7328f9ccd..8db6ffdd5f53 100644 --- a/packages/graphql/schemas/schema.graphql +++ b/packages/graphql/schemas/schema.graphql @@ -264,7 +264,7 @@ type CloudProjectSpec implements Node { union CloudProjectSpecFlakyResult = CloudFeatureNotEnabled | CloudProjectSpecFlakyStatus type CloudProjectSpecFlakyStatus { - """URL linking to the flaky data in the Cypress dashboard for this spec""" + """URL linking to the flaky data in the Cypress Dashboard for this spec""" dashboardUrl: String """Number of flaky runs from the considered runs""" @@ -663,7 +663,7 @@ type CurrentProject implements Node & ProjectLike { """Cached preferences for this project""" preferences: ProjectPreferences - """Used to associate project with Cypress dashboard""" + """Used to associate project with Cypress Dashboard""" projectId: String """Absolute path to the project on the filesystem""" @@ -1010,7 +1010,7 @@ type GlobalProject implements Node & ProjectLike { """Relay style Node ID field for the GlobalProject field""" id: ID! - """Used to associate project with Cypress dashboard""" + """Used to associate project with Cypress Dashboard""" projectId: String """Absolute path to the project on the filesystem""" @@ -1436,7 +1436,7 @@ interface ProjectLike { name: String! ): RemoteFetchableCloudProjectResult - """Used to associate project with Cypress dashboard""" + """Used to associate project with Cypress Dashboard""" projectId: String """Absolute path to the project on the filesystem""" diff --git a/packages/graphql/src/schemaTypes/interfaceTypes/gql-ProjectLike.ts b/packages/graphql/src/schemaTypes/interfaceTypes/gql-ProjectLike.ts index 9d7f4b0ed050..b42fbc7c6d63 100644 --- a/packages/graphql/src/schemaTypes/interfaceTypes/gql-ProjectLike.ts +++ b/packages/graphql/src/schemaTypes/interfaceTypes/gql-ProjectLike.ts @@ -10,7 +10,7 @@ export const ProjectLike = interfaceType({ }) t.string('projectId', { - description: 'Used to associate project with Cypress dashboard', + description: 'Used to associate project with Cypress Dashboard', resolve: (source, args, ctx) => ctx.project.maybeGetProjectId(source), }) diff --git a/packages/graphql/src/schemaTypes/objectTypes/gql-CurrentProject.ts b/packages/graphql/src/schemaTypes/objectTypes/gql-CurrentProject.ts index 02b91fea93a6..1a9a862f360d 100644 --- a/packages/graphql/src/schemaTypes/objectTypes/gql-CurrentProject.ts +++ b/packages/graphql/src/schemaTypes/objectTypes/gql-CurrentProject.ts @@ -77,7 +77,7 @@ export const CurrentProject = objectType({ }) t.string('projectId', { - description: 'Used to associate project with Cypress dashboard', + description: 'Used to associate project with Cypress Dashboard', resolve: (source, args, ctx) => ctx.project.projectId(), }) diff --git a/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts b/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts index d2acd567841c..a0bd14f61602 100644 --- a/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts +++ b/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts @@ -1,7 +1,7 @@ import type { FoundBrowser } from '@packages/types/src' // TODO: fix flaky tests https://github.com/cypress-io/cypress/issues/23418 -describe.skip('Choose a Browser Page', () => { +describe.skip('Choose a browser page', () => { beforeEach(() => { cy.scaffoldProject('launchpad') }) @@ -26,7 +26,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.findByRole('radio', { name: 'Edge v8', checked: true }) @@ -41,7 +41,7 @@ describe.skip('Choose a Browser Page', () => { cy.openProject('launchpad', ['--e2e', '--browser', 'doesNotExist']) cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert-header"]').should('contain', 'Warning: Browser Not Found') cy.get('[data-cy="alert-body"]') .should('contain', 'Browser: doesNotExist was not found on your system or is not supported by Cypress.') @@ -64,7 +64,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert-header"]').should('contain', 'Warning: Browser Not Found') cy.get('[data-cy="alert-body"]').as('AlertBody') @@ -88,7 +88,7 @@ describe.skip('Choose a Browser Page', () => { cy.get('[data-cy="alert-header"]').should('not.exist') cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert-header"]').should('not.exist') }) @@ -97,7 +97,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.findByRole('radio', { name: 'Chrome v1' }) @@ -113,7 +113,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.contains('button', 'Start E2E Testing in Chrome').as('launchButton') @@ -165,7 +165,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.findByRole('radio', { name: 'Chrome v1', checked: true }).as('chromeItem') cy.findByRole('radio', { name: 'Firefox v5', checked: false }).as('firefoxItem') @@ -189,7 +189,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx((ctx, o) => { o.sinon.stub(ctx.actions.project, 'launchProject') @@ -227,7 +227,7 @@ describe.skip('Choose a Browser Page', () => { ctx.browser.setBrowserStatus('open') }) - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.contains('button', 'Running Chrome').as('launchButton') @@ -263,7 +263,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx((ctx) => { expect(ctx.actions.project.launchProject).to.have.been.called @@ -276,7 +276,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.findByRole('radio', { name: 'Chrome v1', checked: true }).as('chromeItem') @@ -307,14 +307,14 @@ describe.skip('Choose a Browser Page', () => { cy.openProject('launchpad', ['--e2e']) cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx(async (ctx) => { await ctx.actions.file.writeFileInProject('cypress.config.js', 'module.exports = {}') }) cy.get('h1').should('contain', 'Welcome to Cypress!') - cy.contains('[data-cy-testingtype="e2e"]', 'Not Configured') + cy.contains('[data-cy-testingtype="e2e"]', 'Not configured') cy.withCtx(async (ctx) => { await ctx.actions.file.writeFileInProject('cypress.config.js', @@ -327,7 +327,7 @@ describe.skip('Choose a Browser Page', () => { }) cy.get('h1').should('contain', 'Welcome to Cypress!') - cy.get('[data-cy-testingtype="e2e"]').should('not.contain', 'Not Configured') + cy.get('[data-cy-testingtype="e2e"]').should('not.contain', 'Not configured') }) }) @@ -344,7 +344,7 @@ describe.skip('Choose a Browser Page', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="open-browser-list"]').children().should('have.length', 1) diff --git a/packages/launchpad/cypress/e2e/config-files-error-handling.cy.ts b/packages/launchpad/cypress/e2e/config-files-error-handling.cy.ts index 011508164858..164141c24db8 100644 --- a/packages/launchpad/cypress/e2e/config-files-error-handling.cy.ts +++ b/packages/launchpad/cypress/e2e/config-files-error-handling.cy.ts @@ -88,7 +88,7 @@ describe('Config files error handling', () => { cy.findByRole('button', { name: 'Try again' }).click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) }) @@ -261,7 +261,7 @@ describe('setupNodeEvents', () => { cy.findByRole('button', { name: 'Try again' }).click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) it('handles multiple config errors and then recovers', () => { @@ -291,7 +291,7 @@ describe('setupNodeEvents', () => { }) cy.findByRole('button', { name: 'Try again' }).click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert"]').should('contain', 'Warning: Cannot Connect Base Url Warning') }) diff --git a/packages/launchpad/cypress/e2e/config-warning.cy.ts b/packages/launchpad/cypress/e2e/config-warning.cy.ts index e1dc9914aabe..1510202d12c5 100644 --- a/packages/launchpad/cypress/e2e/config-warning.cy.ts +++ b/packages/launchpad/cypress/e2e/config-warning.cy.ts @@ -36,7 +36,7 @@ describe('baseUrl', () => { `) }) - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert"]').should('not.exist') }) @@ -46,7 +46,7 @@ describe('baseUrl', () => { cy.visitLaunchpad() cy.get('[data-cy-testingtype="e2e"]').click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert"]').should('not.exist') cy.withCtx(async (ctx) => { @@ -64,7 +64,7 @@ describe('baseUrl', () => { }) cy.get('[data-cy="loading-spinner"]').should('be.visible') - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy="alert"]').contains('Warning: Cannot Connect Base Url Warning') }) }) @@ -96,8 +96,8 @@ describe('experimentalSingleTabRunMode', () => { cy.visitLaunchpad() cy.get('[data-cy-testingtype="component"]').click() - cy.findByTestId('launchpad-Choose a Browser') - cy.get('h1').contains('Choose a Browser') + cy.findByTestId('launchpad-Choose a browser') + cy.get('h1').contains('Choose a browser') }) it('is not a valid config for e2e testing', () => { @@ -139,8 +139,8 @@ describe('experimentalStudio', () => { cy.visitLaunchpad() cy.get('[data-cy-testingtype="e2e"]').click() - cy.findByTestId('launchpad-Choose a Browser') - cy.get('h1').contains('Choose a Browser') + cy.findByTestId('launchpad-Choose a browser') + cy.get('h1').contains('Choose a browser') }) }) @@ -192,7 +192,7 @@ describe('component testing dependency warnings', () => { cy.get('[data-cy-testingtype="component"]').click() // Wait until launch browser screen and assert warning does not exist - cy.contains('Choose a Browser', { timeout: 12000 }) + cy.contains('Choose a browser', { timeout: 12000 }) cy.get('[data-cy="warning-alert"]').should('not.exist') }) @@ -202,7 +202,7 @@ describe('component testing dependency warnings', () => { cy.visitLaunchpad() cy.get('[data-cy="warning-alert"]').should('not.exist') cy.get('[data-cy-testingtype="component"]').click() - cy.contains('Choose a Browser', { timeout: 12000 }) + cy.contains('Choose a browser', { timeout: 12000 }) cy.get('[data-cy="warning-alert"]').should('not.exist') }) }) diff --git a/packages/launchpad/cypress/e2e/error-handling.cy.ts b/packages/launchpad/cypress/e2e/error-handling.cy.ts index cef2949088a1..4ceb6e652de8 100644 --- a/packages/launchpad/cypress/e2e/error-handling.cy.ts +++ b/packages/launchpad/cypress/e2e/error-handling.cy.ts @@ -77,7 +77,7 @@ describe('Error handling', () => { cy.contains('You are using vite for your dev server, but a configuration file was not found.') cy.contains('Add your vite config at one of the above paths, or import your configuration file and provide it to the devServer config as a viteConfig option.') - cy.contains('Choose a Browser').should('not.exist') + cy.contains('Choose a browser').should('not.exist') cy.withCtx(async (ctx) => { await ctx.actions.file.writeFileInProject('cypress.config.ts', ` @@ -96,7 +96,7 @@ describe('Error handling', () => { `) }) - cy.contains('Choose a Browser').should('not.exist') + cy.contains('Choose a browser').should('not.exist') }) context('has config file in common location', () => { @@ -106,7 +106,7 @@ describe('Error handling', () => { cy.visitLaunchpad() // should successful start dev server and move to launch screen! - cy.contains('Choose a Browser') + cy.contains('Choose a browser') }) }) }) @@ -136,7 +136,7 @@ describe('Error handling', () => { cy.visitLaunchpad() // should successful start dev server and move to launch screen! - cy.contains('Choose a Browser') + cy.contains('Choose a browser') }) }) }) diff --git a/packages/launchpad/cypress/e2e/global-mode.cy.ts b/packages/launchpad/cypress/e2e/global-mode.cy.ts index b54b21839eb8..fd271a8eb479 100644 --- a/packages/launchpad/cypress/e2e/global-mode.cy.ts +++ b/packages/launchpad/cypress/e2e/global-mode.cy.ts @@ -221,21 +221,21 @@ describe('Launchpad: Global Mode', () => { it('can be opened', () => { setupAndValidateProjectsList(['todos']) cy.log('Project cards have a menu can be opened') - cy.get('[aria-label="Project Actions"]').click() - cy.get('[data-cy="Remove Project"]').contains(defaultMessages.globalPage.removeProject) - cy.get('[data-cy="Open In IDE"]').contains(defaultMessages.globalPage.openInIDE) - cy.get('[data-cy="Open In Finder"]').contains(defaultMessages.globalPage.openInFinder) + cy.get('[aria-label="Project actions"]').click() + cy.get('[data-cy="Remove project"]').contains(defaultMessages.globalPage.removeProject) + cy.get('[data-cy="Open in IDE"]').contains(defaultMessages.globalPage.openInIDE) + cy.get('[data-cy="Open in Finder"]').contains(defaultMessages.globalPage.openInFinder) }) - it('removes project from list when clicking "Remove Project" menu item', () => { + it('removes project from list when clicking "Remove project" menu item', () => { const projectList = ['todos', 'cookies'] setupAndValidateProjectsList(projectList) - cy.get('[aria-label="Project Actions"]').then((menu) => { + cy.get('[aria-label="Project actions"]').then((menu) => { menu.get(0).click() }) - cy.get('[data-cy="Remove Project"]').click() + cy.get('[data-cy="Remove project"]').click() cy.get('[data-cy="project-card"]') .should('have.length', 1) @@ -246,16 +246,16 @@ describe('Launchpad: Global Mode', () => { const projectList = ['todos'] setupAndValidateProjectsList(projectList) - cy.get('[aria-label="Project Actions"]').click() + cy.get('[aria-label="Project actions"]').click() - cy.get('[data-cy="Open In IDE"]').click() - cy.contains('External Editor Preferences') + cy.get('[data-cy="Open in IDE"]').click() + cy.contains('External editor preferences') }) - it('shows file drop zone when no more projects are in list when clicking "Remove Project" menu item', () => { + it('shows file drop zone when no more projects are in list when clicking "Remove project" menu item', () => { setupAndValidateProjectsList(['todos']) - cy.get('[aria-label="Project Actions"]').click() - cy.get('[data-cy="Remove Project"]').click() + cy.get('[aria-label="Project actions"]').click() + cy.get('[data-cy="Remove project"]').click() cy.get('[data-cy="project-card"]').should('not.exist') cy.get('[data-cy="dropzone"]') diff --git a/packages/launchpad/cypress/e2e/migration.cy.ts b/packages/launchpad/cypress/e2e/migration.cy.ts index 300390f796ce..8a8a0ce856b7 100644 --- a/packages/launchpad/cypress/e2e/migration.cy.ts +++ b/packages/launchpad/cypress/e2e/migration.cy.ts @@ -357,7 +357,7 @@ describe('Full migration flow for each project', { retries: { openMode: 0, runMo // We rename the integration folder, even if the user skips the spec rename cy.findByText('Rename folder only.').click() - cy.findByText('Save Changes').click() + cy.findByText('Save changes').click() cy.percySnapshot() @@ -1326,7 +1326,7 @@ describe('Full migration flow for each project', { retries: { openMode: 0, runMo cy.findByText('Don\'t rename anything — keep what I have.').click() cy.contains('I may need to change my specPattern later') - cy.findByText('Save Changes').click() + cy.findByText('Save changes').click() cy.findByText('Skip renaming specs').click() @@ -1527,7 +1527,7 @@ describe('Migration', { viewportWidth: 1200, retries: { openMode: 0, runMode: 2 cy.findByText('change').click() cy.get('h2').should('contain', 'Change the existing spec file extension') - cy.get('button').contains('Save Changes').click() + cy.get('button').contains('Save changes').click() cy.get('h2').should('not.contain', 'Change the existing spec file extension') cy.findByText('change').click() diff --git a/packages/launchpad/cypress/e2e/open-mode.cy.ts b/packages/launchpad/cypress/e2e/open-mode.cy.ts index 29d0d4ffb1d2..ce71da5dfef3 100644 --- a/packages/launchpad/cypress/e2e/open-mode.cy.ts +++ b/packages/launchpad/cypress/e2e/open-mode.cy.ts @@ -25,7 +25,7 @@ describe('Launchpad: Open Mode', () => { cy.visitLaunchpad() cy.get('[data-cy=header-bar-content]').contains('e2e testing', { matchCase: false }) // e2e testing is configured for the todo project, so we don't expect an error. - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) describe('request for Cypress manifest', () => { @@ -40,7 +40,7 @@ describe('Launchpad: Open Mode', () => { it('includes x-framework and x-dev-server, even when launched in e2e mode', () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx((ctx, o) => { expect(ctx.util.fetch).to.have.been.calledWithMatch('https://download.cypress.io/desktop.json', { headers: { @@ -54,7 +54,7 @@ describe('Launchpad: Open Mode', () => { describe('logged-in state', () => { it(`sends 'false' when not logged in`, () => { cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx((ctx, o) => { expect(ctx.util.fetch).to.have.been.calledWithMatch('https://download.cypress.io/desktop.json', { headers: { @@ -67,7 +67,7 @@ describe('Launchpad: Open Mode', () => { it(`sends 'true' when logged in`, () => { cy.loginUser() cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.withCtx((ctx, o) => { expect(ctx.util.fetch).to.have.been.calledWithMatch('https://download.cypress.io/desktop.json', { headers: { @@ -85,7 +85,7 @@ describe('Launchpad: Open Mode', () => { cy.visitLaunchpad() cy.get('[data-cy=header-bar-content]').contains('component testing', { matchCase: false }) // Component testing is not configured for the todo project - cy.get('h1').should('contain', 'Project Setup') + cy.get('h1').should('contain', 'Project setup') }) // since circle cannot have firefox installed by default, @@ -103,7 +103,7 @@ describe('Launchpad: Open Mode', () => { // Need to visit after args have been configured, todo: fix in #18776 cy.visitLaunchpad() cy.contains('E2E Testing').click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy-browser=firefox]').should('have.attr', 'aria-checked', 'true') cy.get('button[data-cy=launch-button]').invoke('text').should('include', 'Start E2E Testing in Firefox') }) @@ -117,7 +117,7 @@ describe('Launchpad: Open Mode', () => { // Need to visit after args have been configured, todo: fix in #18776 cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') cy.get('[data-cy-browser=firefox]').should('have.attr', 'aria-checked', 'true') cy.get('button[data-cy=launch-button]').invoke('text').should('include', 'Start E2E Testing in Firefox') @@ -176,8 +176,8 @@ describe('Launchpad: Open Mode', () => { cy.visitLaunchpad() cy.findByTestId('project-card') - cy.get('[aria-label="Project Actions"]').click() - cy.get('button').contains('Open In IDE').click() + cy.get('[aria-label="Project actions"]').click() + cy.get('button').contains('Open in IDE').click() cy.get('[data-cy="choose-editor-modal"]').as('modal') @@ -185,13 +185,13 @@ describe('Launchpad: Open Mode', () => { cy.get('@modal').should('not.exist') cy.findByTestId('project-card') - cy.get('[aria-label="Project Actions"]').click() - cy.get('button').contains('Open In IDE').click() + cy.get('[aria-label="Project actions"]').click() + cy.get('button').contains('Open in IDE').click() cy.intercept('POST', 'mutation-ChooseExternalEditorModal_SetPreferredEditorBinary').as('SetPreferred') cy.get('@modal').contains('Choose your editor...').click() cy.get('@modal').contains('Well known editor').click() - cy.get('@modal').contains('Save Changes').click() + cy.get('@modal').contains('Save changes').click() cy.wait('@SetPreferred').its('request.body.variables.value').should('include', '/usr/bin/well-known') }) @@ -202,10 +202,10 @@ describe('Launchpad: Open Mode', () => { cy.visitLaunchpad() cy.findByTestId('project-card') - cy.get('[aria-label="Project Actions"]').click() + cy.get('[aria-label="Project actions"]').click() cy.intercept('POST', 'mutation-GlobalPage_OpenInFinder').as('OpenInFinder') - cy.get('button').contains('Open In Finder').click() + cy.get('button').contains('Open in Finder').click() cy.wait('@OpenInFinder') @@ -233,13 +233,13 @@ describe('Launchpad: Open Mode', () => { cy.visitLaunchpad() cy.get('body').should('not.contain.text', 'Your project does not contain a default supportFile.') - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) it('opens project with spaces in path', () => { cy.scaffoldProject('simple with spaces') cy.openProject('simple with spaces', ['--e2e']) cy.visitLaunchpad() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) }) diff --git a/packages/launchpad/cypress/e2e/project-setup.cy.ts b/packages/launchpad/cypress/e2e/project-setup.cy.ts index 8685291a758e..c777036c38c7 100644 --- a/packages/launchpad/cypress/e2e/project-setup.cy.ts +++ b/packages/launchpad/cypress/e2e/project-setup.cy.ts @@ -48,7 +48,7 @@ describe('Launchpad: Setup Project', () => { } const verifyChooseABrowserPage = () => { - cy.contains('Choose a Browser', { timeout: 15000 }) + cy.contains('Choose a browser', { timeout: 15000 }) cy.findByRole('radio', { name: 'Chrome v1' }) cy.findByRole('radio', { name: 'Firefox v5' }) @@ -76,7 +76,7 @@ describe('Launchpad: Setup Project', () => { cy.openProject('pristine', ['--e2e']) cy.visitLaunchpad() - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') cy.findByText('We added the following files to your project:') cy.get('[data-cy=valid]').within(() => { @@ -97,7 +97,7 @@ describe('Launchpad: Setup Project', () => { cy.scaffoldProject('pristine') cy.openProject('pristine', ['--component']) cy.visitLaunchpad() - cy.get('h1').should('contain', 'Project Setup') + cy.get('h1').should('contain', 'Project setup') }) describe('"learn about testing types" modal', () => { @@ -112,17 +112,17 @@ describe('Launchpad: Setup Project', () => { cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }).should('be.visible') + cy.findByRole('dialog', { name: 'Key differences' }).should('be.visible') cy.contains('Need help').should('be.visible') cy.get('[data-cy="end-to-end-comparison"]').within(() => { - cy.contains('End-to-end Tests').should('be.visible') + cy.contains('End-to-end tests').should('be.visible') cy.get('li').should('have.length', 3) cy.contains('Code Example').should('be.visible') }) cy.get('[data-cy="component-comparison"]').within(() => { - cy.contains('Component Tests').should('be.visible') + cy.contains('Component tests').should('be.visible') cy.get('li').should('have.length', 3) cy.contains('Code Example').should('be.visible') }) @@ -132,7 +132,7 @@ describe('Launchpad: Setup Project', () => { cy.contains('Review the differences').click() cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }) + cy.findByRole('dialog', { name: 'Key differences' }) .as('aboutTestingTypes') .should('be.visible') @@ -145,7 +145,7 @@ describe('Launchpad: Setup Project', () => { cy.contains('Review the differences').click() cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }) + cy.findByRole('dialog', { name: 'Key differences' }) .as('aboutTestingTypes') .should('be.visible') @@ -158,11 +158,11 @@ describe('Launchpad: Setup Project', () => { cy.contains('Review the differences').click() cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }) + cy.findByRole('dialog', { name: 'Key differences' }) .as('aboutTestingTypes') .should('be.visible') .within(() => { - cy.get('h2').contains('Key Differences').should('be.visible') + cy.get('h2').contains('Key differences').should('be.visible') }) cy.findByRole('button', { name: 'Close' }).click() @@ -174,11 +174,11 @@ describe('Launchpad: Setup Project', () => { cy.contains('Review the differences').click() cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }) + cy.findByRole('dialog', { name: 'Key differences' }) .as('aboutTestingTypes') .should('be.visible') .within(() => { - cy.get('h2').contains('Key Differences').should('be.visible') + cy.get('h2').contains('Key differences').should('be.visible') cy.findByRole('button', { name: 'Close' }) .focus() @@ -193,7 +193,7 @@ describe('Launchpad: Setup Project', () => { cy.contains('Review the differences').click() cy.get('#app').should('have.attr', 'aria-hidden', 'true') - cy.findByRole('dialog', { name: 'Key Differences' }) + cy.findByRole('dialog', { name: 'Key differences' }) .should('be.visible') .within(() => { cy.validateExternalLink({ @@ -235,7 +235,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="e2e"]').click() - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') cy.findByText('We added the following files to your project:') cy.get('[data-cy=valid]').within(() => { @@ -258,7 +258,7 @@ describe('Launchpad: Setup Project', () => { verifyChooseABrowserPage() }) - it('moves to "Choose a Browser" page after clicking "Continue" button in first step in configuration page', () => { + it('moves to "Choose a browser" page after clicking "Continue" button in first step in configuration page', () => { scaffoldAndOpenProject('pristine') cy.visitLaunchpad() @@ -266,7 +266,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="e2e"]').click() - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') cy.findByText('We added the following files to your project:') cy.get('[data-cy=valid]').within(() => { @@ -305,7 +305,7 @@ describe('Launchpad: Setup Project', () => { .should('have.focus') .realPress('Enter') - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') cy.findByText('We added the following files to your project:') cy.get('[data-cy=valid]').within(() => { @@ -341,7 +341,7 @@ describe('Launchpad: Setup Project', () => { .should('have.focus') .realPress('Enter') - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') cy.findByText('We added the following files to your project:') cy.get('[data-cy=valid]').within(() => { @@ -380,19 +380,19 @@ describe('Launchpad: Setup Project', () => { cy.findByRole('option', { name: 'Create React App' }).click() cy.get('[data-testid="select-bundler"').should('not.exist') - cy.findByRole('button', { name: 'Next Step' }).should('not.have.disabled') + cy.findByRole('button', { name: 'Next step' }).should('not.have.disabled') cy.findByRole('button', { name: 'Back' }).click() cy.get('[data-cy-testingtype="component"]').click() - cy.findByRole('button', { name: 'Next Step' }).should('have.disabled') + cy.findByRole('button', { name: 'Next step' }).should('have.disabled') cy.contains('Pick a framework').click() cy.findByRole('option', { name: 'Create React App' }).click() - cy.findByRole('button', { name: 'Bundler(Dev Server) Webpack' }).should('not.exist') - cy.findByRole('button', { name: 'Next Step' }).should('not.have.disabled') + cy.findByRole('button', { name: 'Bundler(dev server) Webpack' }).should('not.exist') + cy.findByRole('button', { name: 'Next step' }).should('not.have.disabled') - cy.findByRole('button', { name: 'Next Step' }).click() + cy.findByRole('button', { name: 'Next step' }).click() cy.findByRole('button', { name: 'Waiting for you to install the dependencies...' }) cy.contains('li', 'react-scripts') @@ -431,7 +431,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="component"]').click() - cy.contains('Project Setup') + cy.contains('Project setup') }) it('can move forward to choose browser if e2e is configured', () => { @@ -482,7 +482,7 @@ describe('Launchpad: Setup Project', () => { scaffoldAndOpenProject('pristine-with-e2e-testing', ['--component']) cy.visitLaunchpad() - cy.get('h1').should('contain', 'Project Setup') + cy.get('h1').should('contain', 'Project setup') cy.contains('Confirm the front-end framework and bundler used in your project.') }) @@ -504,7 +504,7 @@ describe('Launchpad: Setup Project', () => { cy.findByRole('option', { name: 'Create React App' }).click() cy.get('[data-testid="select-bundler"').should('not.exist') - cy.findByRole('button', { name: 'Next Step' }).should('not.have.disabled') + cy.findByRole('button', { name: 'Next step' }).should('not.have.disabled') cy.findByRole('button', { name: 'Back' }).click() cy.get('[data-cy-testingtype="component"]').click() @@ -512,12 +512,12 @@ describe('Launchpad: Setup Project', () => { cy.findByRole('button', { name: 'Front-end Framework React.js (detected)' }).click() cy.findByRole('option', { name: 'Vue.js 3' }).click() - cy.findByRole('button', { name: 'Bundler(Dev Server) Pick a bundler' }).click() + cy.findByRole('button', { name: 'Bundler(dev server) Pick a bundler' }).click() cy.findByRole('option', { name: 'Vite' }).click() cy.findByRole('button', { name: 'TypeScript' }).click() - cy.findByRole('button', { name: 'Next Step' }).should('not.have.disabled') - cy.findByRole('button', { name: 'Next Step' }).click() + cy.findByRole('button', { name: 'Next step' }).should('not.have.disabled') + cy.findByRole('button', { name: 'Next step' }).click() cy.findByRole('button', { name: 'Skip' }).click() @@ -551,7 +551,7 @@ describe('Launchpad: Setup Project', () => { cy.findByRole('option', { name: 'Create React App' }).click() cy.findByRole('button', { name: 'TypeScript' }).click() - cy.findByRole('button', { name: 'Next Step' }).click() + cy.findByRole('button', { name: 'Next step' }).click() cy.findByRole('button', { name: 'Skip' }).click() cy.get('[data-cy=valid]').within(() => { @@ -580,7 +580,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="component"]').click() cy.get('[data-testid="select-framework"]').click() cy.findByText('Create React App').click() - cy.findByText('Next Step').click() + cy.findByText('Next step').click() cy.findByDisplayValue('yarn add -D react-scripts react-dom react').should('be.visible') }) @@ -593,7 +593,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="component"]').click() cy.get('[data-testid="select-framework"]').click() cy.findByText('Create React App').click() - cy.findByText('Next Step').click() + cy.findByText('Next step').click() cy.get('code').should('contain.text', 'pnpm install -D ') }) @@ -606,7 +606,7 @@ describe('Launchpad: Setup Project', () => { cy.get('[data-cy-testingtype="component"]').click() cy.get('[data-testid="select-framework"]').click() cy.findByText('Create React App').click() - cy.findByText('Next Step').click() + cy.findByText('Next step').click() cy.get('code').should('contain.text', 'npm install -D ') }) }) @@ -622,7 +622,7 @@ describe('Launchpad: Setup Project', () => { cy.findByText('Vue.js 3').click() cy.contains('button', 'Pick a bundler').click() cy.findByText('Webpack').click() - cy.findByRole('button', { name: 'Next Step' }).should('not.be.disabled').click() + cy.findByRole('button', { name: 'Next step' }).should('not.be.disabled').click() cy.withCtx(async (ctx) => { Object.defineProperty(ctx.coreData, 'scaffoldedFiles', { get () { @@ -656,7 +656,7 @@ describe('Launchpad: Setup Project', () => { verifyWelcomePage({ e2eIsConfigured: false, ctIsConfigured: true }) cy.get('[data-cy-testingtype="component"]').click() - cy.contains('h1', 'Choose a Browser') + cy.contains('h1', 'Choose a browser') // Execute same function that is called in the browser to switch testing types cy.withCtx(async (ctx, { sinon }) => { @@ -668,7 +668,7 @@ describe('Launchpad: Setup Project', () => { cy.reload() - cy.contains('h1', 'Configuration Files') + cy.contains('h1', 'Configuration files') verifyScaffoldedFiles('e2e') }) @@ -679,7 +679,7 @@ describe('Launchpad: Setup Project', () => { verifyWelcomePage({ e2eIsConfigured: true, ctIsConfigured: false }) cy.get('[data-cy-testingtype="e2e"]').click() - cy.contains('h1', 'Choose a Browser') + cy.contains('h1', 'Choose a browser') // Execute same function that is called in the browser to switch testing types cy.withCtx(async (ctx, { sinon }) => { @@ -691,7 +691,7 @@ describe('Launchpad: Setup Project', () => { cy.reload() - cy.contains('h1', 'Project Setup') + cy.contains('h1', 'Project setup') }) }) }) diff --git a/packages/launchpad/cypress/e2e/scaffold-component-testing.cy.ts b/packages/launchpad/cypress/e2e/scaffold-component-testing.cy.ts index 6a68d7cfa39d..670d0f886d00 100644 --- a/packages/launchpad/cypress/e2e/scaffold-component-testing.cy.ts +++ b/packages/launchpad/cypress/e2e/scaffold-component-testing.cy.ts @@ -29,7 +29,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('Vue CLI (Vue 2)(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -41,7 +41,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('Vue CLI (Vue 3)(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -53,7 +53,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('Vue CLI (Vue 3)(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -65,7 +65,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('Create React App(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -77,7 +77,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('React.js(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.ts`) }) @@ -89,7 +89,7 @@ describe('scaffolding component testing', { // should detect correctly cy.get('button').should('be.visible').contains('Vue.js 3(detected)') - cy.get('button').contains('Next Step').click() + cy.get('button').contains('Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.ts`) }) @@ -102,7 +102,7 @@ describe('scaffolding component testing', { // should detect correctly // Screen reader text is "Support is in", but don't want to rely on DOM introduced whitespace so using regex cy.contains('button', /Nuxt\.js \(v2\)\s+Support is in\s+Alpha\(detected\)/).should('be.visible') - cy.contains('button', 'Next Step').click() + cy.contains('button', 'Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -116,7 +116,7 @@ describe('scaffolding component testing', { // should detect correctly // Screen reader text is "Support is in", but don't want to rely on DOM introduced whitespace so using regex cy.contains('button', 'Angular(detected)').should('be.visible') - cy.contains('button', 'Next Step').click() + cy.contains('button', 'Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.ts`) }) @@ -129,7 +129,7 @@ describe('scaffolding component testing', { // should detect correctly // Screen reader text is "Support is in", but don't want to rely on DOM introduced whitespace so using regex cy.contains('button', /Svelte\.js\s+Support is in\s+Alpha\(detected\)/).should('be.visible') - cy.contains('button', 'Next Step').click() + cy.contains('button', 'Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) @@ -142,7 +142,7 @@ describe('scaffolding component testing', { // should detect correctly // Screen reader text is "Support is in", but don't want to rely on DOM introduced whitespace so using regex cy.contains('button', /Svelte\.js\s+Support is in\s+Alpha\(detected\)/).should('be.visible') - cy.contains('button', 'Next Step').click() + cy.contains('button', 'Next step').click() cy.findByRole('button', { name: 'Continue' }).click() verifyConfigFile(`cypress.config.js`) }) diff --git a/packages/launchpad/cypress/e2e/scaffold-project.cy.ts b/packages/launchpad/cypress/e2e/scaffold-project.cy.ts index a87b069c93da..905f0b6df5e2 100644 --- a/packages/launchpad/cypress/e2e/scaffold-project.cy.ts +++ b/packages/launchpad/cypress/e2e/scaffold-project.cy.ts @@ -50,7 +50,7 @@ function scaffoldAndOpenE2EProject (opts: { // No errors were encountered cy.get('[data-testid="error-header"]').should('not.exist') // Asserts that we've made it through the flow - cy.contains('Choose a Browser') + cy.contains('Choose a browser') } function scaffoldAndOpenCTProject (opts: { @@ -84,7 +84,7 @@ function scaffoldAndOpenCTProject (opts: { cy.contains(opts.bundler).click() } - cy.contains('Next Step').click() + cy.contains('Next step').click() cy.contains(cy.i18n.setupWizard.installDependencies.title).should('be.visible') cy.contains('button', cy.i18n.setupWizard.installDependencies.waitForInstall).should('be.disabled') diff --git a/packages/launchpad/cypress/e2e/slow-network.cy.ts b/packages/launchpad/cypress/e2e/slow-network.cy.ts index ed709d17eaf3..ca4e3b137ed1 100644 --- a/packages/launchpad/cypress/e2e/slow-network.cy.ts +++ b/packages/launchpad/cypress/e2e/slow-network.cy.ts @@ -35,14 +35,14 @@ describe('slow network: launchpad', () => { cy.visitLaunchpad() cy.get('[data-cy=top-nav-cypress-version-current-link]').should('not.exist') cy.contains('E2E Testing').click() - cy.get('h1').should('contain', 'Choose a Browser') + cy.get('h1').should('contain', 'Choose a browser') }) // TODO: fix flaky test https://github.com/cypress-io/cypress/issues/21897 it.skip('shows the versions after they resolve', () => { cy.visitLaunchpad() cy.get('[data-cy=top-nav-cypress-version-current-link]').should('not.exist') - cy.contains('Log In') + cy.contains('Log in') cy.wait(500) cy.withCtx(async (ctx, o) => { o.testState.pendingFetches.map((f) => f.resolve()) diff --git a/packages/launchpad/src/components/code/FileRow.cy.tsx b/packages/launchpad/src/components/code/FileRow.cy.tsx index 27e4698c11b9..e3ee91803ba2 100644 --- a/packages/launchpad/src/components/code/FileRow.cy.tsx +++ b/packages/launchpad/src/components/code/FileRow.cy.tsx @@ -113,7 +113,7 @@ describe('FileRow', () => { cy.contains('cypress/integration/command.js') cy.contains(messages.changesRequiredLabel).should('be.visible') - cy.contains(messages.changesRequiredBadge).should('not.exist') // Hide badge when row is expanded + cy.get('[data-cy=changes-required-badge]').should('not.exist') // Hide badge when row is expanded cy.contains(changesRequiredDescription).should('be.visible') cy.get('pre').should('have.length', 2) @@ -140,7 +140,7 @@ describe('FileRow', () => { cy.contains('cypress/integration/command.js') cy.contains(messages.changesRequiredLabel).should('be.visible') - cy.contains(messages.changesRequiredBadge).should('not.exist') + cy.get('[data-cy=changes-required-badge]').should('not.exist') cy.contains(changesRequiredDescription).should('be.visible') cy.get('pre').should('exist') diff --git a/packages/launchpad/src/components/code/FileRow.vue b/packages/launchpad/src/components/code/FileRow.vue index f859da7bbf72..eab58d7dfa97 100644 --- a/packages/launchpad/src/components/code/FileRow.vue +++ b/packages/launchpad/src/components/code/FileRow.vue @@ -17,6 +17,7 @@ {{ filePath }} diff --git a/packages/launchpad/src/global/GlobalProjectCard.vue b/packages/launchpad/src/global/GlobalProjectCard.vue index c9a4ccf0d034..fcefa11e3eec 100644 --- a/packages/launchpad/src/global/GlobalProjectCard.vue +++ b/packages/launchpad/src/global/GlobalProjectCard.vue @@ -34,7 +34,7 @@ ', { viewportWidth: 800 }, () => { }) cy.findByRole('button', { - name: 'Front-end Framework Pick a framework', + name: 'Front-end framework Pick a framework', expanded: false, }) .should('have.attr', 'aria-haspopup', 'true') @@ -52,7 +52,7 @@ describe('', { viewportWidth: 800 }, () => { .should('have.attr', 'data-cy', frameworkIconName(name)) }) - cy.findByRole('button', { name: 'Next Step' }) + cy.findByRole('button', { name: 'Next step' }) .should('have.disabled') }) @@ -72,7 +72,7 @@ describe('', { viewportWidth: 800 }, () => { }) cy.findByRole('button', { - name: 'Front-end Framework Pick a framework', + name: 'Front-end framework Pick a framework', expanded: false, }).click() @@ -97,6 +97,6 @@ describe('', { viewportWidth: 800 }, () => { ), }) - cy.findByLabelText('Bundler(Dev Server)').should('be.visible') + cy.findByLabelText('Bundler(dev server)').should('be.visible') }) }) diff --git a/scripts/gulp/gulpfile.ts b/scripts/gulp/gulpfile.ts index 6da2a10937e0..802cfdb20318 100644 --- a/scripts/gulp/gulpfile.ts +++ b/scripts/gulp/gulpfile.ts @@ -62,7 +62,7 @@ gulp.task( webpackRunner, gulp.series( makePathMap, - // Before dev, fetch the latest "remote" schema from the Cypress dashboard + // Before dev, fetch the latest "remote" schema from the Cypress Dashboard syncRemoteGraphQL, gulp.parallel( viteClean, diff --git a/system-tests/__snapshots__/record_spec.js b/system-tests/__snapshots__/record_spec.js index f2a339466b0f..0781f391a658 100644 --- a/system-tests/__snapshots__/record_spec.js +++ b/system-tests/__snapshots__/record_spec.js @@ -386,7 +386,7 @@ Your Record Key f858a...ee7e1 is not valid with this projectId: pid123 It may have been recently revoked by you or another user. -Please log into the Dashboard to see the valid record keys. +Please log into the Dashboard to see the valid Record Keys. https://on.cypress.io/dashboard/projects/pid123 diff --git a/system-tests/lib/system-tests.ts b/system-tests/lib/system-tests.ts index a1bd1d450934..f97f52c10c47 100644 --- a/system-tests/lib/system-tests.ts +++ b/system-tests/lib/system-tests.ts @@ -179,7 +179,7 @@ type ExecOptions = { */ ciBuildId?: string /** - * Run Cypress with a record key. + * Run Cypress with a Record Key. */ key?: string /**