mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
75 lines
3.0 KiB
TypeScript
75 lines
3.0 KiB
TypeScript
// ***********************************************************
|
|
// This example support/index.js is processed and
|
|
// loaded automatically before your test files.
|
|
//
|
|
// This is a great place to put global configuration and
|
|
// behavior that modifies Cypress.
|
|
//
|
|
// You can change the location of this file or turn off
|
|
// automatically serving support files with the
|
|
// 'supportFile' configuration option.
|
|
//
|
|
// You can read more here:
|
|
// https://on.cypress.io/configuration
|
|
// ***********************************************************
|
|
|
|
// Import all custom Commands (from commands.ts) for all tests
|
|
import './commands';
|
|
// Import Cypress Axe tools for all tests
|
|
// https://github.com/component-driven/cypress-axe
|
|
import 'cypress-axe';
|
|
|
|
import { DSPACE_XSRF_COOKIE } from 'src/app/core/xsrf/xsrf.constants';
|
|
|
|
// Runs once before all tests
|
|
before(() => {
|
|
// Cypress doesn't have access to the running application in Node.js.
|
|
// So, it's not possible to inject or load the AppConfig or environment of the Angular UI.
|
|
// Instead, we'll read our running application's config.json, which contains the configs &
|
|
// is regenerated at runtime each time the Angular UI application starts up.
|
|
cy.task('readUIConfig').then((str: string) => {
|
|
// Parse config into a JSON object
|
|
const config = JSON.parse(str);
|
|
|
|
// Find URL of our REST API & save to global variable via task
|
|
let baseRestUrl = FALLBACK_TEST_REST_BASE_URL;
|
|
if (!config.rest.baseUrl) {
|
|
console.warn("Could not load 'rest.baseUrl' from config.json. Falling back to " + FALLBACK_TEST_REST_BASE_URL);
|
|
} else {
|
|
baseRestUrl = config.rest.baseUrl;
|
|
}
|
|
cy.task('saveRestBaseURL', baseRestUrl);
|
|
|
|
// Find domain of our REST API & save to global variable via task.
|
|
let baseDomain = FALLBACK_TEST_REST_DOMAIN;
|
|
if (!config.rest.host) {
|
|
console.warn("Could not load 'rest.host' from config.json. Falling back to " + FALLBACK_TEST_REST_DOMAIN);
|
|
} else {
|
|
baseDomain = config.rest.host;
|
|
}
|
|
cy.task('saveRestBaseDomain', baseDomain);
|
|
|
|
});
|
|
});
|
|
|
|
// Runs once before the first test in each "block"
|
|
beforeEach(() => {
|
|
// Pre-agree to all Klaro cookies by setting the klaro-anonymous cookie
|
|
// This just ensures it doesn't get in the way of matching other objects in the page.
|
|
cy.setCookie('klaro-anonymous', '{%22authentication%22:true%2C%22preferences%22:true%2C%22acknowledgement%22:true%2C%22google-analytics%22:true%2C%22google-recaptcha%22:true}');
|
|
|
|
// Remove any CSRF cookies saved from prior tests
|
|
cy.clearCookie(DSPACE_XSRF_COOKIE);
|
|
});
|
|
|
|
// NOTE: FALLBACK_TEST_REST_BASE_URL is only used if Cypress cannot read the REST API BaseURL
|
|
// from the Angular UI's config.json. See 'before()' above.
|
|
const FALLBACK_TEST_REST_BASE_URL = 'http://localhost:8080/server';
|
|
const FALLBACK_TEST_REST_DOMAIN = 'localhost';
|
|
|
|
// USEFUL REGEX for testing
|
|
|
|
// Match any string that contains at least one non-space character
|
|
// Can be used with "contains()" to determine if an element has a non-empty text value
|
|
export const REGEX_MATCH_NON_EMPTY_TEXT = /^(?!\s*$).+/;
|