feat: added a test for running a simple cypress server

This commit is contained in:
blam
2021-01-30 01:44:46 +01:00
parent 0f6a3ece53
commit 266f453f43
8 changed files with 248 additions and 6 deletions
@@ -0,0 +1,21 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}
+4
View File
@@ -41,5 +41,9 @@
"watch": "./src",
"exec": "bin/e2e-test",
"ext": "ts"
},
"dependencies": {
"@types/cypress": "^1.1.3",
"cypress": "^6.4.0"
}
}
+34
View File
@@ -0,0 +1,34 @@
/*
* Copyright 2021 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import cypress from 'cypress';
import path from 'path';
export async function run() {
await cypress.run({
reporter: 'junit',
browser: 'chrome',
config: {
watchForFileChanges: true,
baseUrl: process.env.BACKSTAGE_TEST_URL || 'http://localhost:7000',
integrationFolder: path.resolve(__dirname, '../cypress/integration'),
supportFile: path.resolve(__dirname, '../cypress/support'),
fixturesFolder: false,
defaultCommandTimeout: 10000,
},
configFile: false,
});
}
+5
View File
@@ -16,7 +16,12 @@
import { CommanderStatic } from 'commander';
import { run } from './run';
import { run as cypress } from './cypress';
export function registerCommands(program: CommanderStatic) {
program.command('run').description('Run e2e tests').action(run);
program
.command('cypress')
.description('Run cypress e2e tests')
.action(cypress);
}
+28
View File
@@ -0,0 +1,28 @@
/*
* Copyright 2021 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// in cypress/support/index.d.ts
// load type definitions that come with Cypress module
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable {
/**
* Login as guest
* @example cy.loginAsGuests
*/
loginAsGuest(value: string): Chainable<Element>;
}
}
@@ -0,0 +1,25 @@
/*
* Copyright 2021 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <reference types="cypress" />
Cypress.Commands.add('loginAsGuest', () => {
cy.visit('/', {
onLoad: (win: Window) =>
win.localStorage.setItem('@backstage/core:SignInPage:provider', 'guest'),
});
});
export {};