public File generateReportFor(final RequirementsOutcomes requirementsOutcomes, final TestOutcomes testOutcomes, final String filename) throws IOException { Preconditions.checkNotNull(getOutputDirectory()); Map<String,Object> context = new HashMap<String,Object>(); context.put("progress", getEstimatedDeliveryDate(testHistory.getProgress())); context.put("requirements", requirementsOutcomes); context.put("testOutcomes", requirementsOutcomes.getTestOutcomes()); context.put("allTestOutcomes", testOutcomes); context.put("reportName", new ReportNameProvider()); context.put("absoluteReportName", new ReportNameProvider()); context.put("timestamp", timestampFrom(testOutcomes)); addFormattersToContext(context); String htmlContents = mergeTemplate(DEFAULT_PROGRESS_REPORT).usingContext(context); copyResourcesToOutputDirectory(); return writeReportToOutputDirectory(filename, htmlContents); }