--- /dev/null
+import { execSync } from 'child_process';
+import { commandAsWebserver } from '../globals';
+
+/**
+ * Uninstalls a test Drupal site.
+ *
+ * @param {function} callback
+ * A callback which will be called, when the uninstallation is finished.
+ * @return {object}
+ * The 'browser' object.
+ */
+exports.command = function drupalUninstal(callback) {
+ const self = this;
+ const prefix = self.drupalDbPrefix;
+
+ // Check for any existing errors, because running this will cause Nightwatch to hang.
+ if (!this.currentTest.results.errors && !this.currentTest.results.failed) {
+ const dbOption =
+ process.env.DRUPAL_TEST_DB_URL.length > 0
+ ? `--db-url ${process.env.DRUPAL_TEST_DB_URL}`
+ : '';
+ try {
+ if (!prefix || !prefix.length) {
+ throw new Error(
+ 'Missing database prefix parameter, unable to uninstall Drupal (the initial install was probably unsuccessful).',
+ );
+ }
+ execSync(
+ commandAsWebserver(
+ `php ./scripts/test-site.php tear-down ${prefix} ${dbOption}`,
+ ),
+ );
+ } 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;
+};