Erez Rokah 2b41d8a838 feat: bundle assets with content (#2958)
* fix(media_folder_relative): use collection name in unpublished entry

* refactor: pass arguments as object to AssetProxy ctor

* feat: support media folders per collection

* feat: resolve media files path based on entry path

* fix: asset public path resolving

* refactor: introduce typescript for AssetProxy

* refactor: code cleanup

* refactor(asset-proxy): add tests,switch to typescript,extract arguments

* refactor: typescript for editorialWorkflow

* refactor: add typescript for media library actions

* refactor: fix type error on map set

* refactor: move locale selector into reducer

* refactor: add typescript for entries actions

* refactor: remove duplication between asset store and media lib

* feat: load assets from backend using API

* refactor(github): add typescript, cache media files

* fix: don't load media URL if already loaded

* feat: add media folder config to collection

* fix: load assets from API when not in UI state

* feat: load entry media files when opening media library

* fix: editorial workflow draft media files bug fixes

* test(unit): fix unit tests

* fix: editor control losing focus

* style: add eslint object-shorthand rule

* test(cypress): re-record mock data

* fix: fix non github backends, large media

* test: uncomment only in tests

* fix(backend-test): add missing displayURL property

* test(e2e): add media library tests

* test(e2e): enable visual testing

* test(e2e): add github backend media library tests

* test(e2e): add git-gateway large media tests

* chore: post rebase fixes

* test: fix tests

* test: fix tests

* test(cypress): fix tests

* docs: add media_folder docs

* test(e2e): add media library delete test

* test(e2e): try and fix image comparison on CI

* ci: reduce test machines from 9 to 8

* test: add reducers and selectors unit tests

* test(e2e): disable visual regression testing for now

* test: add getAsset unit tests

* refactor: use Asset class component instead of hooks

* build: don't inline source maps

* test: add more media path tests
2019-12-18 11:16:02 -05:00

121 lines
3.3 KiB
JavaScript

// ***********************************************************
// 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 { 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;
}
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;
}
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;
}
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;
}
return null;
},
});
on('before:browser:launch', (browser = {}, args) => {
if (browser.name === 'chrome') {
// to allows usage of a mock proxy
args.push('--ignore-certificate-errors');
return args;
}
if (browser.name === 'electron') {
// to allows usage of a mock proxy
args['ignore-certificate-errors'] = true;
// https://github.com/cypress-io/cypress/issues/2102
if (browser.isHeaded) {
args['width'] = 1200;
args['height'] = 1200;
} else {
args['width'] = 1200;
args['height'] = process.platform === 'darwin' ? 1178 : 1200;
}
return args;
}
});
addMatchImageSnapshotPlugin(on, config);
};