import Cucumber = require("cucumber");
import fs = require("fs");
import BluebirdPromise = require("bluebird");
import ChildProcess = require("child_process");

Cucumber.defineSupportCode(function({ setDefaultTimeout }) {
  setDefaultTimeout(20 * 1000);
});

Cucumber.defineSupportCode(function({ After, Before }) {
  const exec = BluebirdPromise.promisify(ChildProcess.exec);

  After(function() {
    return this.driver.quit();
  });

  Before({tags: "@needs-test-config", timeout: 15 * 1000}, function () {
    return exec("./scripts/example/dc-example.sh -f docker-compose.test.yml up -d authelia && sleep 2");
  });

  After({tags: "@needs-test-config", timeout: 15 * 1000}, function () {
    return exec("./scripts/example/dc-example.sh up -d authelia && sleep 2");
  });
});