diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 612375ca1c..0dd8036e84 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -65,3 +65,9 @@ jobs: working-directory: ${{ runner.temp }}/test-app env: BACKSTAGE_E2E_CLI_TEST: true + - name: e2e test newly created app + run: yarn test:e2e:ci + working-directory: ${{ runner.temp }}/test-app/packages/app + env: + PORT: 3001 + BACKSTAGE_E2E_CLI_TEST: true diff --git a/packages/cli/templates/default-app/package.json.hbs b/packages/cli/templates/default-app/package.json.hbs index 231194a54e..8b725c69c1 100644 --- a/packages/cli/templates/default-app/package.json.hbs +++ b/packages/cli/templates/default-app/package.json.hbs @@ -26,5 +26,8 @@ "@backstage/cli": "^{{version}}", "lerna": "^3.20.2", "prettier": "^1.19.1" + }, + "resolutions": { + "**/cypress": "4.2.0" } } diff --git a/packages/cli/templates/default-app/packages/app/cypress.json b/packages/cli/templates/default-app/packages/app/cypress.json new file mode 100644 index 0000000000..5de7ebffea --- /dev/null +++ b/packages/cli/templates/default-app/packages/app/cypress.json @@ -0,0 +1,5 @@ +{ + "baseUrl": "http://localhost:3001", + "fixturesFolder": false, + "pluginsFile": false +} diff --git a/packages/cli/templates/default-app/packages/app/cypress/.eslintrc.json b/packages/cli/templates/default-app/packages/app/cypress/.eslintrc.json new file mode 100644 index 0000000000..2b3a458b95 --- /dev/null +++ b/packages/cli/templates/default-app/packages/app/cypress/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "plugins": ["cypress"], + "extends": ["plugin:cypress/recommended"], + "rules": { + "jest/expect-expect": [ + "error", + { + "assertFunctionNames": ["expect", "cy.contains"] + } + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": true, + "optionalDependencies": true, + "peerDependencies": true, + "bundledDependencies": true + } + ] + } +} diff --git a/packages/cli/templates/default-app/packages/app/cypress/integration/app.js b/packages/cli/templates/default-app/packages/app/cypress/integration/app.js new file mode 100644 index 0000000000..6c561a734c --- /dev/null +++ b/packages/cli/templates/default-app/packages/app/cypress/integration/app.js @@ -0,0 +1,8 @@ +describe('App', () => { + it('should render the welcome page', () => { + cy.visit('/'); + cy.contains('Welcome to Backstage'); + cy.contains('Getting Started'); + cy.contains('Quick Links'); + }); +}); diff --git a/packages/cli/templates/default-app/packages/app/package.json.hbs b/packages/cli/templates/default-app/packages/app/package.json.hbs index 940091380a..2e607d6086 100644 --- a/packages/cli/templates/default-app/packages/app/package.json.hbs +++ b/packages/cli/templates/default-app/packages/app/package.json.hbs @@ -9,23 +9,33 @@ "@backstage/cli": "^{{version}}", "@backstage/core": "^{{version}}", "@backstage/theme": "^{{version}}", - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.3.2", - "@testing-library/user-event": "^7.1.2", - "@types/jest": "^24.0.0", - "@types/node": "^12.0.0", - "@types/react-router-dom": "^5.1.3", "plugin-welcome": "0.0.0", "react": "^16.12.0", "react-dom": "^16.12.0", "react-router-dom": "^5.1.2", "react-use": "^13.24.0" }, + "devDependencies": { + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/jest": "^24.0.0", + "@types/node": "^12.0.0", + "@types/react-router-dom": "^5.1.3", + "cross-env": "^7.0.0", + "cypress": "^4.2.0", + "eslint-plugin-cypress": "^2.10.3", + "start-server-and-test": "^1.10.11" + }, "scripts": { "start": "backstage-cli app:serve", "bundle": "backstage-cli app:build", "test": "backstage-cli test", - "lint": "backstage-cli lint" + "lint": "backstage-cli lint", + "test:e2e": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:dev", + "test:e2e:ci": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:run", + "cy:dev": "cypress open", + "cy:run": "cypress run" }, "browserslist": { "production": [