// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.front;
import java.io.File;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import fi.hsl.parkandride.ActiveProfileAppender;
import fi.hsl.parkandride.Application;
import fi.hsl.parkandride.FeatureProfile;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles(resolver = ProtractorTest.ProfileResolver.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
public class ProtractorTest {
public static class ProfileResolver extends ActiveProfileAppender {
public ProfileResolver() {
super(FeatureProfile.PTOR, FeatureProfile.DEV_API);
}
}
@Value("${local.server.port}")
private int port;
@Value("${browser:firefox}")
private String browser;
@Test
public void protractor_tests() throws InterruptedException, IOException {
File projectDir = new File(System.getProperty("user.dir"));
if (projectDir.getName().equals("application")) {
projectDir = projectDir.getParentFile();
}
File script = new File(projectDir, "etc/protractor/protractor.sh");
ProcessBuilder builder = new ProcessBuilder("bash", script.getAbsolutePath(),
"test",
"--browser=" + browser,
"--baseUrl=http://localhost:" + port)
.inheritIO();
Process process = builder.start();
if (process.waitFor() != 0) {
Assert.fail("Protractor tests failed");
}
}
}