Newer
Older
import { execSync } from 'child_process';
import { URL } from 'url';
import { commandAsWebserver } from '../globals';
/**
* Installs a Drupal test site.
*
* @param {Object}
* (optional) Settings object
* @param setupFile
* (optional) Setup file used by TestSiteApplicationTest
* @param {function} callback
* A callback which will be called, when the installation is finished.
* @return {object}
* The 'browser' object.
*/
Alex Pott
committed
exports.command = function drupalInstall({ setupFile = '' }, callback) {
const self = this;
try {
setupFile = setupFile ? `--setup-file "${setupFile}"` : '';
const dbOption = process.env.DRUPAL_TEST_DB_URL.length > 0 ? `--db-url ${process.env.DRUPAL_TEST_DB_URL}` : '';
const install = execSync(commandAsWebserver(`php ./scripts/test-site.php install ${setupFile} --base-url ${process.env.DRUPAL_TEST_BASE_URL} ${dbOption} --json`));
const installData = JSON.parse(install.toString());
this.drupalDbPrefix = installData.db_prefix;
const url = new URL(process.env.DRUPAL_TEST_BASE_URL);
this
.url(process.env.DRUPAL_TEST_BASE_URL)
.setCookie({
name: 'SIMPLETEST_USER_AGENT',
// Colons need to be URL encoded to be valid.
value: encodeURIComponent(installData.user_agent),
path: url.pathname,
domain: url.host,
});
}
catch (error) {
this.assert.fail(error);
}
// Nightwatch doesn't like it when no actions are added in a command file.
// https://github.com/nightwatchjs/nightwatch/issues/1792
this.pause(1);
if (typeof callback === 'function') {
callback.call(self);
}
return this;
};