From d81c8b17bd6c46f969348f3caf7e9a89d6f8597f Mon Sep 17 00:00:00 2001 From: Fairuz Date: Sat, 23 Apr 2022 16:14:55 +0800 Subject: [PATCH 1/3] Laravel dusk implementation for testing --- phpunit.dusk.xml | 4 ++ composer.json | 3 +- .../accounts/forms/LoginFormComponent.vue | 8 +-- tests/Browser/CreateBooking.php | 23 ++++++++ tests/Browser/ExampleTest.php | 28 +++++++++ tests/Browser/Pages/HomePage.php | 41 +++++++++++++ tests/Browser/Pages/Page.php | 20 +++++++ tests/Browser/console/.gitignore | 2 + tests/Browser/screenshots/.gitignore | 2 + tests/Browser/source/.gitignore | 2 + tests/DuskTestCase.php | 59 +++++++++++++++++++ 11 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 phpunit.dusk.xml create mode 100644 tests/Browser/CreateBooking.php create mode 100644 tests/Browser/ExampleTest.php create mode 100644 tests/Browser/Pages/HomePage.php create mode 100644 tests/Browser/Pages/Page.php create mode 100644 tests/Browser/console/.gitignore create mode 100644 tests/Browser/screenshots/.gitignore create mode 100644 tests/Browser/source/.gitignore create mode 100644 tests/DuskTestCase.php diff --git a/ phpunit.dusk.xml b/ phpunit.dusk.xml new file mode 100644 index 00000000..40848a84 --- /dev/null +++ b/ phpunit.dusk.xml @@ -0,0 +1,4 @@ + + + + diff --git a/composer.json b/composer.json index 32f52d83..32305073 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^7.2.5", "ext-fileinfo": "*", - "ext-json": "^1.6", + "ext-json": "*", "ext-zip": "*", "barryvdh/laravel-dompdf": "^0.9.0", "carlos-meneses/laravel-mpdf": "^2.1", @@ -31,6 +31,7 @@ "require-dev": { "facade/ignition": "^2.0", "fzaninotto/faker": "^1.9.1", + "laravel/dusk": "^6.23", "mockery/mockery": "^1.3.1", "nunomaduro/collision": "^4.1", "phpunit/phpunit": "^8.5" diff --git a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue index ed097c68..5ddfdadb 100644 --- a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue @@ -7,13 +7,13 @@
- +
- +
@@ -21,7 +21,7 @@

Forgot password?

-
Sign In
+
Sign In
@@ -55,4 +55,4 @@ mixins: [loginFormValidation] } - \ No newline at end of file + diff --git a/tests/Browser/CreateBooking.php b/tests/Browser/CreateBooking.php new file mode 100644 index 00000000..e7391624 --- /dev/null +++ b/tests/Browser/CreateBooking.php @@ -0,0 +1,23 @@ +browse(function (Browser $browser) { + $browser->visit('/') + ->assertSee('Laravel'); + }); + } +} diff --git a/tests/Browser/ExampleTest.php b/tests/Browser/ExampleTest.php new file mode 100644 index 00000000..37f076bd --- /dev/null +++ b/tests/Browser/ExampleTest.php @@ -0,0 +1,28 @@ +browse(function (Browser $browser) { + $browser->visit('http://localhost:86') + ->pause(500) + ->type('email', 'junkit.mah@bioloop.com.my') + ->type('password', '123456abcabc') + ->click('#sign-in') + ->pause(5000) + ->assertPathIs('/dashboard'); + }); + } +} diff --git a/tests/Browser/Pages/HomePage.php b/tests/Browser/Pages/HomePage.php new file mode 100644 index 00000000..26bf174f --- /dev/null +++ b/tests/Browser/Pages/HomePage.php @@ -0,0 +1,41 @@ + '#selector', + ]; + } +} diff --git a/tests/Browser/Pages/Page.php b/tests/Browser/Pages/Page.php new file mode 100644 index 00000000..f8d76222 --- /dev/null +++ b/tests/Browser/Pages/Page.php @@ -0,0 +1,20 @@ + '#selector', + ]; + } +} diff --git a/tests/Browser/console/.gitignore b/tests/Browser/console/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/tests/Browser/console/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Browser/screenshots/.gitignore b/tests/Browser/screenshots/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/tests/Browser/screenshots/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Browser/source/.gitignore b/tests/Browser/source/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/tests/Browser/source/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/DuskTestCase.php b/tests/DuskTestCase.php new file mode 100644 index 00000000..2aabaad9 --- /dev/null +++ b/tests/DuskTestCase.php @@ -0,0 +1,59 @@ +addArguments([ + '--no-sandbox' + ]); + + + return RemoteWebDriver::create( + //'http://localhost:86', + 'http://localhost:9515', + DesiredCapabilities::chrome()->setCapability( + ChromeOptions::CAPABILITY, $options + ) + ); + } + + /** + * Determine whether the Dusk command has disabled headless mode. + * + * @return bool + */ + protected function hasHeadlessDisabled() + { + return true; + //isset($_SERVER['DUSK_HEADLESS_DISABLED']) || + //isset($_ENV['DUSK_HEADLESS_DISABLED']); + } +} From dc69314eee09d5d6e3bd729b7889a124f5f74077 Mon Sep 17 00:00:00 2001 From: Fairuz Date: Mon, 25 Apr 2022 05:12:03 +0800 Subject: [PATCH 2/3] Create booking test --- phpunit.dusk.xml | 12 ++++++++ .../elements/BookingConfirmationComponent.vue | 6 ++-- .../bookings/forms/BookingFormComponent.vue | 4 +-- .../forms/CurrencyConverterComponent.vue | 4 +-- .../forms/PurchaseOrderFormComponent.vue | 18 ++++++------ .../forms/PurchaseOrderItemFormComponent.vue | 14 +++++----- .../forms/confirmBookingComponent.vue | 6 ++-- tests/Browser/CreateBooking.php | 23 --------------- tests/Browser/ExampleTest.php | 28 ------------------- 9 files changed, 38 insertions(+), 77 deletions(-) delete mode 100644 tests/Browser/CreateBooking.php delete mode 100644 tests/Browser/ExampleTest.php diff --git a/ phpunit.dusk.xml b/ phpunit.dusk.xml index 40848a84..db1abe1e 100644 --- a/ phpunit.dusk.xml +++ b/ phpunit.dusk.xml @@ -1,4 +1,16 @@ + + + + + ./tests/Browser/DryRun/ + + + + + diff --git a/resources/assets/vue/components/bookings/elements/BookingConfirmationComponent.vue b/resources/assets/vue/components/bookings/elements/BookingConfirmationComponent.vue index f08ea597..26c036b7 100644 --- a/resources/assets/vue/components/bookings/elements/BookingConfirmationComponent.vue +++ b/resources/assets/vue/components/bookings/elements/BookingConfirmationComponent.vue @@ -100,7 +100,7 @@
-
+
@@ -115,7 +115,7 @@
-
+
@@ -320,4 +320,4 @@ }, mixins: [FormHandler] } - \ No newline at end of file + diff --git a/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue b/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue index 57cbe49e..4ce30e7d 100644 --- a/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue @@ -133,7 +133,7 @@
-
Transfer Now
+
Transfer Now
@@ -152,7 +152,7 @@
- +
diff --git a/resources/assets/vue/components/bookings/forms/CurrencyConverterComponent.vue b/resources/assets/vue/components/bookings/forms/CurrencyConverterComponent.vue index a9b0ba80..6e21140f 100644 --- a/resources/assets/vue/components/bookings/forms/CurrencyConverterComponent.vue +++ b/resources/assets/vue/components/bookings/forms/CurrencyConverterComponent.vue @@ -17,7 +17,7 @@
- +
@@ -111,7 +111,7 @@
- +
diff --git a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue index cde4d84d..0608fcb2 100644 --- a/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/PurchaseOrderFormComponent.vue @@ -23,13 +23,13 @@
- +
- +
@@ -37,13 +37,13 @@
- +
-
+
@@ -52,9 +52,9 @@
- +
-
+
@@ -71,7 +71,7 @@
{{data.fixed_currency.short_code}} {{productTotal.toFixed(3)}}
- +
@@ -112,7 +112,7 @@
- +
@@ -262,4 +262,4 @@ }, mixins: [formHandler] } - \ No newline at end of file + diff --git a/resources/assets/vue/components/bookings/forms/PurchaseOrderItemFormComponent.vue b/resources/assets/vue/components/bookings/forms/PurchaseOrderItemFormComponent.vue index 80e28394..d91d2661 100644 --- a/resources/assets/vue/components/bookings/forms/PurchaseOrderItemFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/PurchaseOrderItemFormComponent.vue @@ -58,13 +58,13 @@
- +
- +
@@ -72,13 +72,13 @@
- +
-
+
@@ -87,9 +87,9 @@
- +
-
+
@@ -185,4 +185,4 @@ }, mixins: [formHandler] } - \ No newline at end of file + diff --git a/resources/assets/vue/components/bookings/forms/confirmBookingComponent.vue b/resources/assets/vue/components/bookings/forms/confirmBookingComponent.vue index 5897646c..2cb67ca0 100644 --- a/resources/assets/vue/components/bookings/forms/confirmBookingComponent.vue +++ b/resources/assets/vue/components/bookings/forms/confirmBookingComponent.vue @@ -1,10 +1,10 @@ @@ -37,4 +37,4 @@ }, mixins: [ModalFormHandler] } - \ No newline at end of file + diff --git a/tests/Browser/CreateBooking.php b/tests/Browser/CreateBooking.php deleted file mode 100644 index e7391624..00000000 --- a/tests/Browser/CreateBooking.php +++ /dev/null @@ -1,23 +0,0 @@ -browse(function (Browser $browser) { - $browser->visit('/') - ->assertSee('Laravel'); - }); - } -} diff --git a/tests/Browser/ExampleTest.php b/tests/Browser/ExampleTest.php deleted file mode 100644 index 37f076bd..00000000 --- a/tests/Browser/ExampleTest.php +++ /dev/null @@ -1,28 +0,0 @@ -browse(function (Browser $browser) { - $browser->visit('http://localhost:86') - ->pause(500) - ->type('email', 'junkit.mah@bioloop.com.my') - ->type('password', '123456abcabc') - ->click('#sign-in') - ->pause(5000) - ->assertPathIs('/dashboard'); - }); - } -} From 9f59f9110aa6abc0554732d8e29f493e4ff89916 Mon Sep 17 00:00:00 2001 From: Fairuz Date: Mon, 25 Apr 2022 05:12:16 +0800 Subject: [PATCH 3/3] Create booking test --- tests/Browser/DryRun/CreateBookingTest.php | 68 ++++++++++++++++++++++ tests/Browser/DryRun/LoginTe.php | 26 +++++++++ 2 files changed, 94 insertions(+) create mode 100644 tests/Browser/DryRun/CreateBookingTest.php create mode 100644 tests/Browser/DryRun/LoginTe.php diff --git a/tests/Browser/DryRun/CreateBookingTest.php b/tests/Browser/DryRun/CreateBookingTest.php new file mode 100644 index 00000000..98a47da7 --- /dev/null +++ b/tests/Browser/DryRun/CreateBookingTest.php @@ -0,0 +1,68 @@ +browse(function (Browser $browser) { + $browser->visit('http://localhost:86') + ->pause(500) + ->typeSlowly('email', 'junkit.mah@bioloop.com.my') + ->typeSlowly('password', '123456abcabc') + ->click('#sign-in') + ->pause(5000) + ->assertPathIs('/dashboard'); + }); + } + + /** + * @test + * @depends testLogin + */ + public function testCreateBooking() + { + $this->browse(function (Browser $browser) { + $browser->waitForLocation('/dashboard') + ->waitForText('X1 Service') + ->typeSlowly('cc_sending', '10000') + ->pause(5000) + ->waitForText('Transfer Now',5000) + ->click('#transfer-now') + ->whenAvailable('#select-account-modal', function ($modal) { + $modal->pause(1000) + ->press('#select-list') + ->press('#select-option') + ->pause(5000) + ->click('#confirm-new-booking'); + #->click('#cancel-new-booking'); + }) + ->pause(7000) + ->typeSlowly('stock_code', '123') + ->typeSlowly('desc', 'Product A') + ->typeSlowly('unit_price', '100') + ->pause(7000) + ->click('#add-quantity') + ->click('#add-quantity') + ->pause(7000) + ->click('#minus-quantity') + ->click('#minus-quantity') + ->pause(7000) + ->typeSlowly('quantity', '5') + ->pause(7000) + ->click('#add-product') + ->pause(7000) + ->click('#save-purchase-order') + ->pause(10000); + //Assert if booking created successfully + + }); + } +} diff --git a/tests/Browser/DryRun/LoginTe.php b/tests/Browser/DryRun/LoginTe.php new file mode 100644 index 00000000..13ebc523 --- /dev/null +++ b/tests/Browser/DryRun/LoginTe.php @@ -0,0 +1,26 @@ +browse(function (Browser $browser) { + $browser->visit('http://localhost:86') + ->pause(500) + ->type('email', 'junkit.mah@bioloop.com.my') + ->type('password', '123456abcabc') + ->click('#sign-in') + ->pause(5000) + ->assertPathIs('/dashboard'); + }); + } +}