summaryrefslogtreecommitdiffstats
path: root/cypress.config.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cypress.config.ts')
-rw-r--r--cypress.config.ts89
1 files changed, 89 insertions, 0 deletions
diff --git a/cypress.config.ts b/cypress.config.ts
new file mode 100644
index 00000000..cd41fb26
--- /dev/null
+++ b/cypress.config.ts
@@ -0,0 +1,89 @@
+
+import {
+ configureNextcloud,
+ startNextcloud,
+ stopNextcloud,
+ waitOnNextcloud,
+} from './cypress/dockerNode'
+import { defineConfig } from 'cypress'
+
+import browserify from '@cypress/browserify-preprocessor'
+import getCompareSnapshotsPlugin from 'cypress-visual-regression/dist/plugin'
+
+export default defineConfig({
+ projectId: '7mqhfh',
+
+ // 16/9 screen ratio
+ viewportWidth: 1280,
+ viewportHeight: 720,
+
+ // Tries again 2 more times on failure
+ retries: {
+ runMode: 2,
+ // do not retry in `cypress open`
+ openMode: 0,
+ },
+
+ // Needed to trigger `after:run` events with cypress open
+ experimentalInteractiveRunEvents: true,
+
+ // faster video processing
+ videoCompression: false,
+
+ // Visual regression testing
+ env: {
+ failSilently: false,
+ type: 'actual',
+ },
+ screenshotsFolder: 'cypress/snapshots/actual',
+ trashAssetsBeforeRuns: true,
+
+ e2e: {
+ testIsolation: false,
+
+ // We've imported your old cypress plugins here.
+ // You may want to clean this up later by importing these.
+ async setupNodeEvents(on, config) {
+ // Fix browserslist extend https://github.com/cypress-io/cypress/issues/2983#issuecomment-570616682
+ on('file:preprocessor', browserify({ typescript: require.resolve('typescript') }))
+ getCompareSnapshotsPlugin(on, config)
+
+ // Disable spell checking to prevent rendering differences
+ on('before:browser:launch', (browser, launchOptions) => {
+ if (browser.family === 'chromium' && browser.name !== 'electron') {
+ launchOptions.preferences.default['browser.enable_spellchecking'] = false
+ return launchOptions
+ }
+
+ if (browser.family === 'firefox') {
+ launchOptions.preferences['layout.spellcheckDefault'] = 0
+ return launchOptions
+ }
+
+ if (browser.name === 'electron') {
+ launchOptions.preferences.spellcheck = false
+ return launchOptions
+ }
+ })
+
+ // Remove container after run
+ on('after:run', () => {
+ stopNextcloud()
+ })
+
+ // Before the browser launches
+ // starting Nextcloud testing container
+ return startNextcloud(process.env.BRANCH)
+ .then((ip) => {
+ // Setting container's IP as base Url
+ config.baseUrl = `http://${ip}/index.php`
+ return ip
+ })
+ .then(waitOnNextcloud)
+ .then(() => configureNextcloud(process.env.BRANCH))
+ .then(() => {
+ return config
+ })
+ },
+ },
+})