diff --git a/packages/desktop-gui/cypress/integration/settings_spec.js b/packages/desktop-gui/cypress/integration/settings_spec.js index 2e53beef9c2d..ab427bd5c38e 100644 --- a/packages/desktop-gui/cypress/integration/settings_spec.js +++ b/packages/desktop-gui/cypress/integration/settings_spec.js @@ -358,34 +358,52 @@ describe('Settings', () => { }) describe('project id panel', () => { - beforeEach(function () { - this.openProject.resolve(this.config) - this.projectStatuses[0].id = this.config.projectId - this.getProjectStatus.resolve(this.projectStatuses[0]) + context('with json file', () => { + beforeEach(function () { + this.openProject.resolve(this.config) + this.projectStatuses[0].id = this.config.projectId + this.getProjectStatus.resolve(this.projectStatuses[0]) - this.goToSettings() - cy.contains('Project ID').click() - }) + this.goToSettings() + cy.contains('Project ID').click() + }) - it('displays project id section', function () { - cy.contains(this.config.projectId) - cy.percySnapshot() - }) + it('displays project id section', function () { + cy.contains(this.config.projectId) + cy.percySnapshot() + }) + + it('shows tooltip on hover of copy to clipboard', () => { + cy.get('.action-copy').trigger('mouseover') + cy.get('.cy-tooltip').should('contain', 'Copy to clipboard') + }) - it('shows tooltip on hover of copy to clipboard', () => { - cy.get('.action-copy').trigger('mouseover') - cy.get('.cy-tooltip').should('contain', 'Copy to clipboard') + it('copies project id config to clipboard', function () { + cy.get('.action-copy').click() + .then(() => { + const expectedJsonConfig = { + projectId: this.config.projectId, + } + const expectedCopyCommand = JSON.stringify(expectedJsonConfig, null, 2) + + expect(this.ipc.setClipboardText).to.be.calledWith(expectedCopyCommand) + }) + }) }) - it('copies project id config to clipboard', function () { - cy.get('.action-copy').click() - .then(() => { - const expectedJsonConfig = { - projectId: this.config.projectId, - } - const expectedCopyCommand = JSON.stringify(expectedJsonConfig, null, 2) + context('with js file', () => { + beforeEach(function () { + this.openProject.resolve({ ...this.config, configFile: 'custom.cypress.js' }) + this.projectStatuses[0].id = this.config.projectId + this.getProjectStatus.resolve(this.projectStatuses[0]) + + this.goToSettings() + cy.contains('Project ID').click() + }) - expect(this.ipc.setClipboardText).to.be.calledWith(expectedCopyCommand) + it('displays project id section', function () { + cy.get('[data-cy="project-id"] pre').contains('module.exports = {') + cy.percySnapshot() }) }) }) @@ -586,6 +604,17 @@ describe('Settings', () => { .should('contain', systemNodeVersion) .should('not.contain', bundledNodeVersion) }) + + it('should display an additional line when configFile is not JSON', function () { + const configFile = 'notjson.js' + + this.navigateWithConfig({ + configFile, + }) + + cy.contains(`Node.js Version (${bundledNodeVersion})`).click() + cy.get('.node-version li').should('contain', configFile) + }) }) describe('proxy settings panel', () => { diff --git a/packages/desktop-gui/src/lib/config-file-formatted.jsx b/packages/desktop-gui/src/lib/config-file-formatted.jsx index 4f6bccb6d98f..d8d57092aa04 100644 --- a/packages/desktop-gui/src/lib/config-file-formatted.jsx +++ b/packages/desktop-gui/src/lib/config-file-formatted.jsx @@ -6,10 +6,14 @@ const configFileFormatted = (configFile) => { return <>cypress.json file (currently disabled by --config-file false) } - if (isUndefined(configFile) || configFile === 'cypress.json') { + if (isUndefined(configFile)) { return <>cypress.json file } + if (['cypress.json', 'cypress.config.js'].includes(configFile)) { + return <>{configFile} file + } + return <>custom config file {configFile} } diff --git a/packages/desktop-gui/src/lib/utils.js b/packages/desktop-gui/src/lib/utils.js index 6ca15663670e..624935431a93 100644 --- a/packages/desktop-gui/src/lib/utils.js +++ b/packages/desktop-gui/src/lib/utils.js @@ -103,3 +103,5 @@ export function stripSharedDirsFromDir2 (dir1, dir2, osName) { .join(sep) .value() } + +export const isFileJSON = (file) => file && /\.json$/.test(file) diff --git a/packages/desktop-gui/src/settings/node-version.jsx b/packages/desktop-gui/src/settings/node-version.jsx index 4c41cf3177e0..be71ab417d2b 100644 --- a/packages/desktop-gui/src/settings/node-version.jsx +++ b/packages/desktop-gui/src/settings/node-version.jsx @@ -3,6 +3,8 @@ import { observer } from 'mobx-react' import React from 'react' import ipc from '../lib/ipc' +import { isFileJSON } from '../lib/utils' +import { configFileFormatted } from '../lib/config-file-formatted' const openHelp = (e) => { e.preventDefault() @@ -89,6 +91,9 @@ const NodeVersion = observer(({ project }) => {
This Node.js version is used to: