Skip to content

Instantly share code, notes, and snippets.

@rnorth
Created January 25, 2017 20:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rnorth/970f2b51d0b6055432819e94ad8f7750 to your computer and use it in GitHub Desktop.
Save rnorth/970f2b51d0b6055432819e94ad8f7750 to your computer and use it in GitHub Desktop.
version: '2'
services:
front-end:
image: weaveworksdemos/front-end
hostname: front-end
restart: always
environment:
- reschedule:on-node-failure
edge-router:
image: weaveworksdemos/edge-router
hostname: edge-router
restart: always
environment:
- reschedule:on-node-failure
catalogue:
image: weaveworksdemos/catalogue
hostname: catalogue
restart: always
environment:
- reschedule:on-node-failure
accounts:
image: weaveworksdemos/accounts
hostname: accounts
restart: always
environment:
- reschedule:on-node-failure
accounts-db:
image: mongo
hostname: accounts-db
restart: always
environment:
- reschedule:on-node-failure
cart:
image: weaveworksdemos/cart
hostname: cart
restart: always
environment:
- reschedule:on-node-failure
cart-db:
image: mongo
hostname: cart-db
restart: always
environment:
- reschedule:on-node-failure
orders:
image: weaveworksdemos/orders
hostname: orders
restart: always
environment:
- reschedule:on-node-failure
orders-db:
image: mongo
hostname: orders-db
restart: always
environment:
- reschedule:on-node-failure
shipping:
image: weaveworksdemos/shipping
hostname: shipping
restart: always
environment:
- reschedule:on-node-failure
queue-master:
image: weaveworksdemos/queue-master
hostname: queue-master
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
environment:
- reschedule:on-node-failure
rabbitmq:
image: rabbitmq:3
hostname: rabbitmq
restart: always
environment:
- reschedule:on-node-failure
payment:
image: weaveworksdemos/payment
hostname: payment
restart: always
environment:
- reschedule:on-node-failure
login:
image: weaveworksdemos/login
hostname: login
restart: always
environment:
- reschedule:on-node-failure
package com.example;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testcontainers.containers.BrowserWebDriverContainer;
import org.testcontainers.containers.DockerComposeContainer;
import org.testcontainers.shaded.com.google.common.util.concurrent.Uninterruptibles;
import org.zeroturnaround.exec.ProcessExecutor;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
public class SeleniumComposeUITest {
@ClassRule
public static DockerComposeContainer compose =
new DockerComposeContainer(new File("src/test/resources/docker-compose.yml"))
.withExposedService("edge-router", 80);
@Rule
public BrowserWebDriverContainer chrome =
new BrowserWebDriverContainer()
.withDesiredCapabilities(org.openqa.selenium.remote.DesiredCapabilities.chrome());
private RemoteWebDriver driver;
@Before
public void loadHomepage() {
driver = chrome.getWebDriver();
driver.get("http://" + compose.getServiceHost("edge-router_1", 80) + ":" + compose.getServicePort("edge-router_1", 80) + "/");
// Start up a VNC session for visibility (Mac only in current implementation)
try {
new ProcessExecutor("open", chrome.getVncAddress()).start();
} catch (IOException ignored) { }
}
@Test
public void simpleTest() {
WebElement colourfulProductLink = driver.findElementByPartialLinkText("Colourful");
colourfulProductLink.click();
driver.findElementByPartialLinkText("Add to cart").click();
WebElement cartButton = driver.findElementByPartialLinkText(" in cart");
assertEquals("The right number of items are in the cart after adding", "1 item(s) in cart", cartButton.getText().trim());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment