Files
mostlymatter/e2e-tests/cypress/tests/plugins/index.js
Mario Vitale 948f8941f0 CLD-7841 Optimize E2E testing costs (#27883)
* Utilize free runners for E2E tests, report back to PR on run completion
* Increase test stability on smaller instances
* Merge worker reports
* merge start+prepare steps
* upgrade keycloak
* increase test timeouts
* Add video recording to report artifacts

Co-authored-by: Saturnino Abril <5334504+saturninoabril@users.noreply.github.com>

---------

Co-authored-by: Saturnino Abril <5334504+saturninoabril@users.noreply.github.com>
2024-08-14 21:39:08 +02:00

93 строки
2.9 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
/* eslint-disable no-console */
const fs = require('fs');
const clientRequest = require('./client_request');
const {
dbGetActiveUserSessions,
dbGetUser,
dbGetUserSession,
dbUpdateUserSession,
} = require('./db_request');
const externalRequest = require('./external_request').default;
const {fileExist, writeToFile} = require('./file_util');
const getPdfContent = require('./get_pdf_content');
const getRecentEmail = require('./get_recent_email');
const keycloakRequest = require('./keycloak_request');
const oktaRequest = require('./okta_request');
const postBotMessage = require('./post_bot_message');
const postIncomingWebhook = require('./post_incoming_webhook');
const postMessageAs = require('./post_message_as');
const postListOfMessages = require('./post_list_of_messages');
const reactToMessageAs = require('./react_to_message_as');
const {
shellFind,
shellRm,
shellUnzip,
} = require('./shell');
const urlHealthCheck = require('./url_health_check');
const log = (message) => {
console.log(message);
return null;
};
module.exports = (on, config) => {
on('task', {
clientRequest,
dbGetActiveUserSessions,
dbGetUser,
dbGetUserSession,
dbUpdateUserSession,
externalRequest,
fileExist,
writeToFile,
getPdfContent,
getRecentEmail,
keycloakRequest,
log,
oktaRequest,
postBotMessage,
postIncomingWebhook,
postMessageAs,
postListOfMessages,
urlHealthCheck,
reactToMessageAs,
shellFind,
shellRm,
shellUnzip,
});
on('before:browser:launch', (browser = {}, launchOptions) => {
if (browser.name === 'chrome' && !config.chromeWebSecurity) {
launchOptions.args.push('--disable-features=CrossSiteDocumentBlockingIfIsolating,CrossSiteDocumentBlockingAlways,IsolateOrigins,site-per-process');
launchOptions.args.push('--load-extension=tests/extensions/Ignore-X-Frame-headers');
}
if (browser.family === 'chromium' && browser.name !== 'electron') {
launchOptions.args.push('--disable-dev-shm-usage');
}
return launchOptions;
});
// https://docs.cypress.io/guides/guides/screenshots-and-videos#Delete-videos-for-specs-without-failing-or-retried-tests
on('after:spec', (spec, results) => {
if (results && results.video) {
// Do we have failures for any retry attempts?
const failures = results.tests.some((test) =>
test.attempts.some((attempt) => attempt.state === 'failed'),
);
if (!failures) {
// delete the video if the spec passed and no tests retried
fs.unlinkSync(results.video);
}
}
});
return config;
};