From 64f455af94f493c315480f2c92df3d7c97b3dcf1 Mon Sep 17 00:00:00 2001 From: Andrew Sumner Date: Mon, 11 Apr 2016 18:59:59 +1200 Subject: [PATCH] ScreenshotCard image href have timestamp query appended to prevent browser serving up cached image --- .../ext/storyboard/ScreenshotCard.java | 10 ++++-- src/test/java/demo/StoryboardDemo.html | 12 ------- src/test/java/demo/StoryboardDemo.java | 8 ++--- .../ext/storyboard/DummyScreenshotTaker.java | 30 +++++++++++++----- src/test/resources/image/details.jpg | Bin 9436 -> 0 bytes src/test/resources/image/details1.jpg | Bin 0 -> 15393 bytes src/test/resources/image/details2.jpg | Bin 0 -> 16083 bytes 7 files changed, 33 insertions(+), 27 deletions(-) delete mode 100644 src/test/resources/image/details.jpg create mode 100644 src/test/resources/image/details1.jpg create mode 100644 src/test/resources/image/details2.jpg diff --git a/src/main/java/org/concordion/ext/storyboard/ScreenshotCard.java b/src/main/java/org/concordion/ext/storyboard/ScreenshotCard.java index 7da7082..c202f6d 100644 --- a/src/main/java/org/concordion/ext/storyboard/ScreenshotCard.java +++ b/src/main/java/org/concordion/ext/storyboard/ScreenshotCard.java @@ -3,6 +3,10 @@ import java.awt.Dimension; import java.io.File; import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.Date; + import org.concordion.api.Element; import org.concordion.api.Resource; import org.concordion.ext.ScreenshotTaker; @@ -83,9 +87,11 @@ private File combine(String path1, String path2) @Override protected void addHTMLToContainer(final Element container) { + String href = this.imageName + "?version=" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + // Add link to image Element anchorImg = new Element("a"); - anchorImg.addAttribute("href", this.imageName); + anchorImg.addAttribute("href", href); container.appendChild(anchorImg); // Add image to card @@ -98,7 +104,7 @@ protected void addHTMLToContainer(final Element container) { img.addStyleClass("sizeportrait"); } - img.addAttribute("src", this.imageName); + img.addAttribute("src", href); img.addAttribute("width", Integer.toString(this.imageSize.width)); anchorImg.appendChild(img); diff --git a/src/test/java/demo/StoryboardDemo.html b/src/test/java/demo/StoryboardDemo.html index b349a4b..ac413d2 100644 --- a/src/test/java/demo/StoryboardDemo.html +++ b/src/test/java/demo/StoryboardDemo.html @@ -11,17 +11,5 @@

Example: Hello World

This is example 1b

-
-

Example 2

-

This is example 2a

-

This is example 2b

-
- -
-

Example 3

-

This is example 3a

-

This is example 3b

-
- \ No newline at end of file diff --git a/src/test/java/demo/StoryboardDemo.java b/src/test/java/demo/StoryboardDemo.java index ccf338d..27bdcf8 100644 --- a/src/test/java/demo/StoryboardDemo.java +++ b/src/test/java/demo/StoryboardDemo.java @@ -15,7 +15,7 @@ public class StoryboardDemo { @Extension public final StoryboardExtension storyboard = new StoryboardExtension() - .setScreenshotTaker(new DummyScreenshotTaker()) + .setScreenshotTaker(new DummyScreenshotTaker(1)) .setAppendMode(AppendTo.EXAMPLE); public boolean addCard(final String description) { @@ -26,10 +26,8 @@ public boolean addCard(final String description) { //storyboard.addScreenshot("Try this", "hey"); storyboard.addSectionBreak(title); - storyboard.addNotification("Example", description, null, StockCardImage.TEXT, CardResult.SUCCESS); -// storyboard.addSectionBreak("Inner"); - storyboard.addNotification("Example", description, null, StockCardImage.TEXT, CardResult.FAILURE); -// storyboard.addSectionBreak(""); + storyboard.addNotification("n1", "description", StockCardImage.EMAIL, CardResult.SUCCESS); + storyboard.addScreenshot("s2", "description"); storyboard.addSectionBreak(""); return true; diff --git a/src/test/java/test/concordion/ext/storyboard/DummyScreenshotTaker.java b/src/test/java/test/concordion/ext/storyboard/DummyScreenshotTaker.java index 9e4d2b3..715a9f2 100644 --- a/src/test/java/test/concordion/ext/storyboard/DummyScreenshotTaker.java +++ b/src/test/java/test/concordion/ext/storyboard/DummyScreenshotTaker.java @@ -14,16 +14,28 @@ * Returns the contents of a static file, so that screenshots of my system don't inadvertently make it onto the net :-) */ public final class DummyScreenshotTaker implements ScreenshotTaker { - private static final String IMAGE_PATH = "image/details.jpg"; - static final BufferedImage IMAGE; - - static { + private static final String IMAGE_PATH = "image/details#.jpg"; + private int index = 1; + + public DummyScreenshotTaker() { + } + public DummyScreenshotTaker(int startIndex) { + index = startIndex; + } + + private BufferedImage getImage() { + try { - InputStream imageStream = DummyStoryboardFactory.class.getClassLoader().getResourceAsStream(IMAGE_PATH); + InputStream imageStream = DummyStoryboardFactory.class.getClassLoader().getResourceAsStream(IMAGE_PATH.replace("#", String.valueOf(index))); if (imageStream == null) { throw new RuntimeException(String.format("Unable to find IMAGE '%s' on classpath", IMAGE_PATH)); } - IMAGE = ImageIO.read(imageStream); + + index ++; + if (index > 2) { + index = 1; + } + return ImageIO.read(imageStream); } catch (IOException e) { throw new RuntimeException("Unable to create DummyScreenshotFactory", e); } @@ -31,8 +43,10 @@ public final class DummyScreenshotTaker implements ScreenshotTaker { @Override public Dimension writeScreenshotTo(OutputStream outputStream) throws IOException { - ImageIO.write(IMAGE, getFileExtension(), outputStream); - return new Dimension(IMAGE.getWidth(), IMAGE.getHeight()); + BufferedImage image = getImage(); + + ImageIO.write(image, getFileExtension(), outputStream); + return new Dimension(image.getWidth(), image.getHeight()); } @Override diff --git a/src/test/resources/image/details.jpg b/src/test/resources/image/details.jpg deleted file mode 100644 index 42c003e7ace005c24ce5ea802831b41dab699734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9436 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 diff --git a/src/test/resources/image/details1.jpg b/src/test/resources/image/details1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a190f4487425e55d2cf773512368e66808c3256 GIT binary patch literal 15393 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 literal 0 HcmV?d00001 diff --git a/src/test/resources/image/details2.jpg b/src/test/resources/image/details2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9bbc9f8e38f44a8c138f4e7bb53ae174dbe30089 GIT binary patch literal 16083 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 literal 0 HcmV?d00001