diff --git a/briar-gtk/tests/briar_gtk/test_window.py b/briar-gtk/tests/briar_gtk/test_window.py
new file mode 100644
index 0000000000000000000000000000000000000000..4cef6376fe8af3ac817387966b9821d53929d363
--- /dev/null
+++ b/briar-gtk/tests/briar_gtk/test_window.py
@@ -0,0 +1,109 @@
+# Copyright (c) 2020 Nico Alt
+# SPDX-License-Identifier: AGPL-3.0-only
+# License-Filename: LICENSE.md
+
+import pytest
+
+from briar_gtk.window import Window
+
+MODULE = "briar_gtk.window.%s"
+
+
+def test_default_resize_at_init(mocker, startup_container, window_actions,
+                                window_add, window_resize):
+    Window()
+
+    window_resize.assert_called_once_with(900, 600)
+
+
+def test_startup_container_at_init(mocker, startup_container, window_actions,
+                                   window_add, window_resize):
+    window = Window()
+
+    startup_container.assert_called_once_with(window)
+    window.current_container.show_all.assert_called_once()
+
+
+def test_window_actions_at_init(mocker, startup_container, window_actions,
+                                window_add, window_resize):
+    Window()
+
+    window_actions.assert_called_once()
+
+
+def test_window_add_at_init(mocker, startup_container, window_actions,
+                            window_add, window_resize):
+    window = Window()
+
+    window_add.assert_called_once_with(window.current_container)
+
+
+def test_show_main_container(main_window_container, mocker,
+                             startup_container, window_actions,
+                             window_add, window_resize):
+    Window().show_main_container()
+
+    main_window_container.assert_called_once()
+
+
+def test_show_main_shown(main_window_container, mocker,
+                         startup_container, window_actions,
+                         window_add, window_resize):
+    window = Window()
+
+    window.show_main_container()
+
+    window.current_container.show_all.assert_called_once()
+
+
+def test_show_main_add(main_window_container, mocker,
+                       startup_container, window_actions,
+                       window_add, window_resize):
+    window = Window()
+    window_add = mocker.patch(MODULE % "Window.add")
+
+    window.show_main_container()
+
+    window_add.assert_called_once_with(window.current_container)
+
+
+def test_show_main_destroy_old(main_window_container, mocker,
+                               startup_container, window_actions,
+                               window_add, window_resize):
+    window = Window()
+    current_container_mock = mocker.MagicMock()
+    window.current_container = current_container_mock
+
+    window.show_main_container()
+
+    current_container_mock.destroy.assert_called_once()
+
+
+@pytest.fixture(autouse=True)
+def gi_dependencies(mocker):
+    mocker.patch(MODULE % "Gtk")
+
+
+@pytest.fixture()
+def startup_container(mocker):
+    return mocker.patch(MODULE % "StartupContainer")
+
+
+@pytest.fixture()
+def main_window_container(mocker):
+    return mocker.patch(MODULE % "MainWindowContainer")
+
+
+@pytest.fixture()
+def window_actions(mocker):
+    return mocker.patch(MODULE % "WindowActions")
+
+
+@pytest.fixture()
+def window_add(mocker):
+    return mocker.patch(MODULE % "Window.add")
+
+
+@pytest.fixture()
+def window_resize(mocker):
+    return mocker.patch(MODULE % "Window.resize")