cypress-8.x-1.x-dev/tests/Cypress/support/commands.js

tests/Cypress/support/commands.js
// @ts-check
/// <reference types="Cypress" />

require('drupal-test-session-cypress');

const baseUrl = function() {
  return Cypress.env('DRUPAL_TEST_BASE_URL') || 'http://localhost:8888';
};

const dbUrl = function() {
  return Cypress.env('DRUPAL_TEST_DB_URL') || 'sqlite://localhost/sites/default/files/test.sqlite';
};

Cypress.Commands.add('drush', command => {
  return cy.exec([
    `HTTP_USER_AGENT=${Cypress.env('SIMPLETEST_USER_AGENT') || 'foo'}`,
    `${Cypress.env('DRUPAL_DRUSH') || 'drush'} --uri=${baseUrl()} ${command}`
  ].join(' '));
});

Cypress.Commands.add('drupalScript', (script, args) => {
  return cy.request('POST', '/cypress/script', {
    script,
    args,
  }).then(response => {
    return response.body;
  });
});

Cypress.Commands.add('drupalInstall', (options) => {
  const setupFile = options.setup ? `--setup-file "${options.setup}"` : '';
  cy.exec(`php ${Cypress.env('CYPRESS_MODULE_PATH')}/scripts/test-site.php install --install-profile ${options.profile || 'testing'} ${setupFile} --base-url ${baseUrl()} --db-url ${dbUrl()} --json`, {
    env: {
      'DRUPAL_CONFIG_CHECK': options.strictConfigCheck,
      'DRUPAL_CONFIG_DIR': options.config,
      'DRUPAL_APP_ROOT': Cypress.env('DRUPAL_APP_ROOT'),
      'DRUPAL_INSTALL_CACHE': options.cache,
      'DRUPAL_DRUSH': Cypress.env('DRUPAL_DRUSH') || 'drush',
    },
    timeout: 3000000
  }).then(result => {
    let installData;
    try {
      installData = JSON.parse(result.stdout);
    } catch (e) {
      throw new Error(`Cannot parse JSON:\n${result.stdout}`);
    }
    Cypress.env('DRUPAL_DB_PREFIX', installData.db_prefix);
    Cypress.env('DRUPAL_SITE_PATH', installData.site_path);
    Cypress.env('SIMPLETEST_USER_AGENT', installData.user_agent);
    cy.setCookie('SIMPLETEST_USER_AGENT', encodeURIComponent(installData.user_agent));
  });
});

Cypress.Commands.add('drupalUninstall', () => {
  const prefix = Cypress.env('DRUPAL_DB_PREFIX');
  const dbOption = `--db-url ${dbUrl()}`;
  cy.exec(`php ../core/scripts/test-site.php tear-down ${prefix} ${dbOption}`, {
    timeout: 3000000
  });
});

Cypress.Commands.add('drupalVisitEntity', (type, query, link = 'canonical') => {
  const params = Object.keys(query).map(key => `${key}=${encodeURI(query[key])}`).join('&');
  cy.visit(`/cypress/entity/${type}/${link}?${params}`);
});

/**
 * Override visit command to inject our custom headers.
 */
Cypress.Commands.overwrite('visit', (originalFn, url, options) => {
  const headers = Object.assign((options && options.headers) || {}, cy.state('drupalHeaders'));
  return originalFn(url, Object.assign(options || {}, {
    'headers': headers,
  }))
});

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc