       assert List.first(report.pages).fields.hello == "Hello world"
     end
 
-    test "add two pages" do
+    test "add two pages with template and fields" do
       report =
         Rapport.new
         |> Rapport.add_page(@hello_template, %{hello: "One"})
         |> Rapport.add_page(@hello_template, %{hello: "Two"})
+
+      assert length(report.pages) == 2
+    end
+
+    test "add one page with a Page struct" do
+      report =
+        Rapport.new
+        |> Rapport.add_page(%Page{template: @hello_template, fields: %{hello: "Hello world"}})
+
+      assert length(report.pages) == 1
+      assert List.first(report.pages).fields.hello == "Hello world"
+    end
+
+    test "add two pages using Page structs" do
+      report =
+        Rapport.new
+        |> Rapport.add_page(%Page{template: @hello_template, fields: %{hello: "One"}})
+        |> Rapport.add_page(%Page{template: @hello_template, fields: %{hello: "Two"}})
 
       assert length(report.pages) == 2
     end

defmodule RapportTest do
  use ExUnit.Case
  doctest Rapport

  @hello_template Path.join(__DIR__, "templates/hello.html.eex")
  @two_fields_template Path.join(__DIR__, "templates/two_fields.html.eex")

  end

  describe "add_page" do
    test "add one page with template and fields" do
      report =
        Rapport.new
        |> Rapport.add_page(@hello_template, %{hello: "Hello world"})
