Erez Rokah 6f221ab3c1 Feat: editorial workflow bitbucket gitlab (#3014)
* refactor: typescript the backends

* feat: support multiple files upload for GitLab and BitBucket

* fix: load entry media files from media folder or UI state

* chore: cleanup log message

* chore: code cleanup

* refactor: typescript the test backend

* refactor: cleanup getEntry unsued variables

* refactor: moved shared backend code to lib util

* chore: rename files to preserve history

* fix: bind readFile method to API classes

* test(e2e): switch to chrome in cypress tests

* refactor: extract common api methods

* refactor: remove most of immutable js usage from backends

* feat(backend-gitlab): initial editorial workflow support

* feat(backend-gitlab): implement missing workflow methods

* chore: fix lint error

* feat(backend-gitlab): support files deletion

* test(e2e): add gitlab cypress tests

* feat(backend-bitbucket): implement missing editorial workflow methods

* test(e2e): add BitBucket backend e2e tests

* build: update node version to 12 on netlify builds

* fix(backend-bitbucket): extract BitBucket avatar url

* test: fix git-gateway AuthenticationPage test

* test(e2e): fix some backend tests

* test(e2e): fix tests

* test(e2e): add git-gateway editorial workflow test

* chore: code cleanup

* test(e2e): revert back to electron

* test(e2e): add non editorial workflow tests

* fix(git-gateway-gitlab): don't call unpublishedEntry in simple workflow

gitlab git-gateway doesn't support editorial workflow APIs yet. This change makes sure not to call them in simple workflow

* refactor(backend-bitbucket): switch to diffstat API instead of raw diff

* chore: fix test

* test(e2e): add more git-gateway tests

* fix: post rebase typescript fixes

* test(e2e): fix tests

* fix: fix parsing of content key and add tests

* refactor: rename test file

* test(unit): add getStatues unit tests

* chore: update cypress

* docs: update beta docs
2020-01-14 17:15:14 -05:00

144 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ***********************************************************
// 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)
require('dotenv').config();
const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin');
const { setupGitHub, teardownGitHub, setupGitHubTest, teardownGitHubTest } = require('./github');
const {
setupGitGateway,
teardownGitGateway,
setupGitGatewayTest,
teardownGitGatewayTest,
} = require('./gitGateway');
const { setupGitLab, teardownGitLab, setupGitLabTest, teardownGitLabTest } = require('./gitlab');
const {
setupBitBucket,
teardownBitBucket,
setupBitBucketTest,
teardownBitBucketTest,
} = require('./bitbucket');
const { copyBackendFiles } = require('../utils/config');
module.exports = async (on, config) => {
// `on` is used to hook into various events Cypress emits
on('task', {
async setupBackend({ backend, options }) {
console.log('Preparing environment for backend', backend);
await copyBackendFiles(backend);
let result = null;
switch (backend) {
case 'github':
result = await setupGitHub(options);
break;
case 'git-gateway':
result = await setupGitGateway(options);
break;
case 'gitlab':
result = await setupGitLab(options);
break;
case 'bitbucket':
result = await setupBitBucket(options);
break;
}
return result;
},
async teardownBackend(taskData) {
const { backend } = taskData;
console.log('Tearing down backend', backend);
switch (backend) {
case 'github':
await teardownGitHub(taskData);
break;
case 'git-gateway':
await teardownGitGateway(taskData);
break;
case 'gitlab':
await teardownGitLab(taskData);
break;
case 'bitbucket':
await teardownBitBucket(taskData);
break;
}
console.log('Restoring defaults');
await copyBackendFiles('test');
return null;
},
async setupBackendTest(taskData) {
const { backend, testName } = taskData;
console.log(`Setting up single test '${testName}' for backend`, backend);
switch (backend) {
case 'github':
await setupGitHubTest(taskData);
break;
case 'git-gateway':
await setupGitGatewayTest(taskData);
break;
case 'gitlab':
await setupGitLabTest(taskData);
break;
case 'bitbucket':
await setupBitBucketTest(taskData);
break;
}
return null;
},
async teardownBackendTest(taskData) {
const { backend, testName } = taskData;
console.log(`Tearing down single test '${testName}' for backend`, backend);
switch (backend) {
case 'github':
await teardownGitHubTest(taskData);
break;
case 'git-gateway':
await teardownGitGatewayTest(taskData);
break;
case 'gitlab':
await teardownGitLabTest(taskData);
break;
case 'bitbucket':
await teardownBitBucketTest(taskData);
break;
}
return null;
},
});
on('before:browser:launch', (browser = {}, args) => {
if (browser.name === 'chrome') {
// to allows usage of a mock proxy
args.push('--ignore-certificate-errors');
args.push('-disable-gpu');
if (browser.isHeaded) {
args.push('--window-size=1200,1200');
} else {
args.push('--window-size=1200,1077');
}
return args;
}
});
addMatchImageSnapshotPlugin(on, config);
};