From 216e1522bb69d7addacbb3766d741aecc2336194 Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Mon, 10 Aug 2020 09:23:25 +0200 Subject: [PATCH] most of our pages now have an availability test --- tests/Browser/Pages/Plugin.php | 50 ++++++++++++++++ tests/Browser/Pages/SitesearchWidget.php | 76 ++++++++++++++++++++++++ tests/Browser/Pages/WebsearchWidget.php | 51 ++++++++++++++++ tests/Browser/Pages/Widget.php | 51 ++++++++++++++++ tests/Browser/StaticPagesTest.php | 59 ++++++++++++++++++ 5 files changed, 287 insertions(+) create mode 100644 tests/Browser/Pages/Plugin.php create mode 100644 tests/Browser/Pages/SitesearchWidget.php create mode 100644 tests/Browser/Pages/WebsearchWidget.php create mode 100644 tests/Browser/Pages/Widget.php diff --git a/tests/Browser/Pages/Plugin.php b/tests/Browser/Pages/Plugin.php new file mode 100644 index 000000000..e47cea91d --- /dev/null +++ b/tests/Browser/Pages/Plugin.php @@ -0,0 +1,50 @@ +<?php + +namespace Tests\Browser\Pages; + +use Laravel\Dusk\Browser; + +class Plugin extends Page +{ + /** + * Get the URL for the page. + * + * @return string + */ + public function url() + { + return '/plugin'; + } + + /** + * Assert that the browser is on the page. + * + * @param Browser $browser + * @return void + */ + public function assert(Browser $browser) + { + $browser->assertPathIs($this->url()) + ->waitForText("MetaGer zum Firefox hinzufügen") + ->assertTitle("Plugin - MetaGer") + ->switchLanguage("English") + ->waitForText("Add MetaGer to your Firefox") + ->assertTitle("Plugin - MetaGer") + ->switchLanguage("Español") + ->waitForText("Añadir MetaGer a Firefox") + ->assertTitle("Plugin - MetaGer") + ->switchLanguage("Deutsch"); + } + + /** + * Get the element shortcuts for the page. + * + * @return array + */ + public function elements() + { + return [ + '@element' => '#selector', + ]; + } +} diff --git a/tests/Browser/Pages/SitesearchWidget.php b/tests/Browser/Pages/SitesearchWidget.php new file mode 100644 index 000000000..00146a6f8 --- /dev/null +++ b/tests/Browser/Pages/SitesearchWidget.php @@ -0,0 +1,76 @@ +<?php + +namespace Tests\Browser\Pages; + +use Laravel\Dusk\Browser; + +class SitesearchWidget extends Page +{ + /** + * Get the URL for the page. + * + * @return string + */ + public function url() + { + return '/sitesearch/'; + } + + /** + * Assert that the browser is on the page. + * + * @param Browser $browser + * @return void + */ + public function assert(Browser $browser) + { + $browser->assertPathIs($this->url()) + ->waitForText("Hier finden Sie ein Metager-Widget für Ihre Webseite.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->type("site", "https://metager.de") + ->press("Generieren") + ->waitForLocation("/sitesearch") + ->waitForText("Hier finden Sie ein Metager-Widget für Ihre Webseite.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->visit($this->url()) + ->switchLanguage("English") + ->waitForText("Here you find a Metager-Widget for your website.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->type("site", "https://metager.de") + ->press("Generate"); + $location = "/en/sitesearch"; + if (env("APP_ENV", "") === "production") { + $location = "/sitesearch"; + } + $browser->waitForLocation($location) + ->waitForText("Here you find a Metager-Widget for your website.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->visit($this->url()) + ->switchLanguage("Español") + ->waitForText("Hier finden Sie ein Metager-Widget für Ihre Webseite.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->type("site", "https://metager.de") + ->press("Generar"); + $location = "/es/sitesearch"; + if (env("APP_ENV", "") === "production") { + $location = "/sitesearch"; + } + $browser->waitForLocation($location) + ->waitForText("Hier finden Sie ein Metager-Widget für Ihre Webseite.") + ->assertTitle("Sitesearch-Widget - MetaGer") + ->visit($this->url()) + ->switchLanguage("Deutsch"); + } + + /** + * Get the element shortcuts for the page. + * + * @return array + */ + public function elements() + { + return [ + '@element' => '#selector', + ]; + } +} diff --git a/tests/Browser/Pages/WebsearchWidget.php b/tests/Browser/Pages/WebsearchWidget.php new file mode 100644 index 000000000..8bde9848a --- /dev/null +++ b/tests/Browser/Pages/WebsearchWidget.php @@ -0,0 +1,51 @@ +<?php + +namespace Tests\Browser\Pages; + +use Laravel\Dusk\Browser; + +class WebsearchWidget extends Page +{ + /** + * Get the URL for the page. + * + * @return string + */ + public function url() + { + return '/websearch'; + } + + /** + * Assert that the browser is on the page. + * + * @param Browser $browser + * @return void + */ + public function assert(Browser $browser) + { + $browser->assertPathIs($this->url()) + ->waitForText("Hier finden Sie ein Metager-Widget für Ihre Webseite.") + ->assertTitle("Websuche-Widget - MetaGer") + ->switchLanguage("English") + ->waitForText("Here you find a Metager-Widget for your website.") + ->assertTitle("Websearch-Widget - MetaGer") + ->switchLanguage("Español") + ->waitForText("Aquà encuentra el MetaGer-widget para su sitio web") + ->assertTitle("Widget para buscar la web - MetaGer") + ->switchLanguage("Deutsch"); + + } + + /** + * Get the element shortcuts for the page. + * + * @return array + */ + public function elements() + { + return [ + '@element' => '#selector', + ]; + } +} diff --git a/tests/Browser/Pages/Widget.php b/tests/Browser/Pages/Widget.php new file mode 100644 index 000000000..4a3d927a0 --- /dev/null +++ b/tests/Browser/Pages/Widget.php @@ -0,0 +1,51 @@ +<?php + +namespace Tests\Browser\Pages; + +use Laravel\Dusk\Browser; + +class Widget extends Page +{ + /** + * Get the URL for the page. + * + * @return string + */ + public function url() + { + return '/widget'; + } + + /** + * Assert that the browser is on the page. + * + * @param Browser $browser + * @return void + */ + public function assert(Browser $browser) + { + $browser->assertPathIs($this->url()) + ->waitForText("MetaGer zum Einbau in Ihre Webseite. Wählen Sie dafür aus, wo gesucht werden soll:") + ->assertTitle("MetaGer Widget") + ->switchLanguage("English") + ->waitForText("MetaGer for usage on your website. Please choose the scope of your widget:") + ->assertTitle("MetaGer Widget") + ->switchLanguage("Español") + ->waitForText("MetaGer: un motor de búsqueda for suyo sitio web. Selecciona por favor:") + ->assertTitle("MetaGer Widget") + ->switchLanguage("Deutsch"); + + } + + /** + * Get the element shortcuts for the page. + * + * @return array + */ + public function elements() + { + return [ + '@element' => '#selector', + ]; + } +} diff --git a/tests/Browser/StaticPagesTest.php b/tests/Browser/StaticPagesTest.php index 13f84e57e..2315c74ef 100644 --- a/tests/Browser/StaticPagesTest.php +++ b/tests/Browser/StaticPagesTest.php @@ -10,8 +10,11 @@ use Tests\Browser\Pages\Hilfe; use Tests\Browser\Pages\HomePage; use Tests\Browser\Pages\Impress; use Tests\Browser\Pages\Kontakt; +use Tests\Browser\Pages\SitesearchWidget; use Tests\Browser\Pages\Spende; use Tests\Browser\Pages\Team; +use Tests\Browser\Pages\WebsearchWidget; +use Tests\Browser\Pages\Widget; use Tests\DuskTestCase; class StaticPagesTest extends DuskTestCase @@ -128,4 +131,60 @@ class StaticPagesTest extends DuskTestCase ->on(new Impress); }); } + + public function testPlugin() + { + $this->browse(function (Browser $browser) { + $browser->visit("/") + ->waitFor("@sidebarToggle") + ->click("@sidebarToggle") + ->click("label[for=servicesToggle]") + ->clickLink("MetaGer Plugin") + ->waitForLocation("/plugin") + ->on(new Plugin); + }); + } + + public function testWidget() + { + $this->browse(function (Browser $browser) { + $browser->visit("/") + ->waitFor("@sidebarToggle") + ->click("@sidebarToggle") + ->click("label[for=servicesToggle]") + ->clickLink("Widget") + ->waitForLocation("/widget") + ->on(new Widget); + }); + } + + public function testWebsearchWidget() + { + $this->browse(function (Browser $browser) { + $browser->visit("/") + ->waitFor("@sidebarToggle") + ->click("@sidebarToggle") + ->click("label[for=servicesToggle]") + ->clickLink("Widget") + ->waitForLocation("/widget") + ->clickLink("Suche im Web") + ->waitForLocation("/websearch") + ->on(new WebsearchWidget); + }); + } + + public function testSitesearchWidget() + { + $this->browse(function (Browser $browser) { + $browser->visit("/") + ->waitFor("@sidebarToggle") + ->click("@sidebarToggle") + ->click("label[for=servicesToggle]") + ->clickLink("Widget") + ->waitForLocation("/widget") + ->clickLink("Suche nur auf einer Domain") + ->waitForLocation("/sitesearch/") + ->on(new SitesearchWidget); + }); + } } -- GitLab