diff --git a/test/doggo_test.exs b/test/doggo_test.exs
index 2712b530..25e495bc 100644
--- a/test/doggo_test.exs
+++ b/test/doggo_test.exs
@@ -326,4 +326,274 @@ defmodule DoggoTest do
assert text(time) == "2023-12-28 03:30:21+09:00 JST Asia/Tokyo"
end
end
+
+ describe "time/1" do
+ test "with Time" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with DateTime" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with NaiveDateTime" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with nil" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ assert html == []
+ end
+
+ test "with formatter" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18h 30m"
+ end
+
+ test "with title formatter" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "title") == ["18h 30m"]
+ end
+
+ test "with Time and microsecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107074"]
+ assert text(time) == "18:30:21.107074"
+ end
+
+ test "with Time and millisecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107"]
+ assert text(time) == "18:30:21.107"
+ end
+
+ test "with Time and second precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with Time and minute precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:00"]
+ assert text(time) == "18:30:00"
+ end
+
+ test "with DateTime and microsecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107074"]
+ assert text(time) == "18:30:21.107074"
+ end
+
+ test "with DateTime and millisecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107"]
+ assert text(time) == "18:30:21.107"
+ end
+
+ test "with DateTime and second precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with DateTime and minute precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:00"]
+ assert text(time) == "18:30:00"
+ end
+
+ test "with NaiveDateTime and microsecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107074"]
+ assert text(time) == "18:30:21.107074"
+ end
+
+ test "with NaiveDateTime and millisecond precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21.107"]
+ assert text(time) == "18:30:21.107"
+ end
+
+ test "with NaiveDateTime and second precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:21"]
+ assert text(time) == "18:30:21"
+ end
+
+ test "with NaiveDateTime and minute precision" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["18:30:00"]
+ assert text(time) == "18:30:00"
+ end
+
+ test "with DateTime and time zone" do
+ assigns = %{}
+
+ html =
+ parse_heex(~H"""
+
+ """)
+
+ time = Floki.find(html, "time")
+
+ assert Floki.attribute(time, "datetime") == ["03:30:21"]
+ assert text(time) == "03:30:21"
+ end
+ end
end