diff --git a/phpinfo.php b/phpinfo.php new file mode 100644 index 00000000..968c8df7 --- /dev/null +++ b/phpinfo.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/phpunit.dusk.xml b/phpunit.dusk.xml index 07f70bd1..aedee3ae 100644 --- a/phpunit.dusk.xml +++ b/phpunit.dusk.xml @@ -10,7 +10,8 @@ stopOnFailure="false"> - ./tests/Browser + tests\Browser\dusktest\page\front\RegisterTest.php + diff --git a/phpunit.xml b/phpunit.xml index 4ae4d979..0a80004f 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -11,6 +11,7 @@ ./tests/Feature + diff --git a/public/phpinfo.php b/public/phpinfo.php new file mode 100644 index 00000000..968c8df7 --- /dev/null +++ b/public/phpinfo.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/tests/Browser/dusktest/RunnerTestCase/DuskTestSuite.php b/tests/Browser/dusktest/RunnerTestCase/DuskTestSuite.php new file mode 100644 index 00000000..bbdb5010 --- /dev/null +++ b/tests/Browser/dusktest/RunnerTestCase/DuskTestSuite.php @@ -0,0 +1,19 @@ +addTestFile(__DIR__.'/../page/front/LoginTest.php'); + $suite->addTestFile(__DIR__.'/../page/front/RegisterTest.php'); + + return $suite; + } +} diff --git a/tests/Browser/dusktest/RunnerTestCase/Run_Case.php b/tests/Browser/dusktest/RunnerTestCase/Run_Case.php new file mode 100644 index 00000000..950c276e --- /dev/null +++ b/tests/Browser/dusktest/RunnerTestCase/Run_Case.php @@ -0,0 +1,31 @@ +addTestFile('E:\phpstudy_pro\WWW\autotest.test\beikeshop\tests\Browser\dusktest\page\front\RegisterFirst.php'); + //注册 + $suite->addTestFile('E:\phpstudy_pro\WWW\autotest.test\beikeshop\tests\Browser\dusktest\page\front\RegisterTest.php'); + //增加地址 + $suite->addTestFile('E:\phpstudy_pro\WWW\autotest.test\beikeshop\tests\Browser\dusktest\page\front\AddressTest.php'); + $suite->addTestFile('E:\phpstudy_pro\WWW\autotest.test\beikeshop\tests\Browser\dusktest\page\front\LoginTest.php'); + $suite->addTestFile('E:\phpstudy_pro\WWW\autotest.test\beikeshop\tests\Browser\dusktest\page\front\OrderTest.php'); + // 运行测试套件 + $result = $suite->run(); + // 输出测试结果 + $printer = new DefaultResultPrinter(); + // 输出测试结果 + $printer->printResult($result); diff --git a/tests/Browser/dusktest/RunnerTestCase/Run_Login_Case.php b/tests/Browser/dusktest/RunnerTestCase/Run_Login_Case.php deleted file mode 100644 index c6c2c63e..00000000 --- a/tests/Browser/dusktest/RunnerTestCase/Run_Login_Case.php +++ /dev/null @@ -1,48 +0,0 @@ -$scenario(); - } - } - - public function test_login_run() - { - $Loginful = new LoginGrounp(); - $Loginful->openurl(); - -// $this->runScenarios([ -// 'openurl', -// 'ture_email', -// 'ture_password', -// 'click_login_btn', -// 'ture_assert', -// ]); - } -} diff --git a/tests/Browser/dusktest/data/account.php b/tests/Browser/dusktest/data/account.php new file mode 100644 index 00000000..eb260273 --- /dev/null +++ b/tests/Browser/dusktest/data/account.php @@ -0,0 +1,9 @@ +"test",//add_name + "add_phone"=>"v11012010086",//选择国家 + "add_code"=>"643203",//add_code + "add_address1"=>"test1",//add_address1 + "add_address2"=>"test2",//add_address2 + +]; diff --git a/tests/Browser/dusktest/data/account_page.php b/tests/Browser/dusktest/data/account_page.php new file mode 100644 index 00000000..2a96a88f --- /dev/null +++ b/tests/Browser/dusktest/data/account_page.php @@ -0,0 +1,23 @@ +"/account", + "go_index"=>"Home",//beikeshop图标 +]; +const address = [ + "login_url" =>"/account/addresses", + "add_btn"=>"Add New Address", + "go_address"=>"Addresses",//beikeshop图标 + "add_name"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(1) > div > div > input",//add_name + "add_phone"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(2) > div > div > input",//add_phone + "add_country"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(3) > div > div > div:nth-child(1) > div > div > div > div.el-input.el-input--suffix > span > span",//选择国家 + "add_address"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(3) > div > div > div:nth-child(3) > div > div > div.el-input > input", + "add_province"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(3) > div > div > div:nth-child(2) > div > div > div > div.el-input.el-input--suffix > span > span", + "add_code"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(4) > div > div > input",//add_code + "add_address1"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(5) > div > div > input",//add_address1 + "add_address2"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(6) > div > div > input",//add_address2 + "default"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(7) > div > div > span",//default + "save"=>"#address-app > div:nth-child(2) > div > div > div.el-dialog__body > form > div:nth-child(8) > div > button.el-button.el-button--primary",//save + "assert"=>"Default Address", + //addresses +]; + diff --git a/tests/Browser/dusktest/data/checkout_page.php b/tests/Browser/dusktest/data/checkout_page.php new file mode 100644 index 00000000..4144dee2 --- /dev/null +++ b/tests/Browser/dusktest/data/checkout_page.php @@ -0,0 +1,7 @@ + 'Submit Order', + 'assert' => 'Congratulations, the order was successfully generated!', +]; diff --git a/tests/Browser/dusktest/data/index_page.php b/tests/Browser/dusktest/data/index_page.php new file mode 100644 index 00000000..1622a5cf --- /dev/null +++ b/tests/Browser/dusktest/data/index_page.php @@ -0,0 +1,9 @@ + "/", + "product_img" => "#tab-product-0 > div > div:nth-child(1) > div > div.image > a",//购买商品图标 + + "buy_btn" => "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 + "address_btn" => "#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 + "login_text" => "Home", +]; diff --git a/tests/Browser/dusktest/data/order_page.php b/tests/Browser/dusktest/data/order_page.php new file mode 100644 index 00000000..8a77631e --- /dev/null +++ b/tests/Browser/dusktest/data/order_page.php @@ -0,0 +1,17 @@ +"/login", + "product"=> "#tab-product-0 > div > div:nth-child(1) > div > div.image > a > div > img",//购买商品 + "buy_btn"=> "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 + "address_btn"=>"#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 + "login_text"=> "Home", +]; +const register = [ + "register_email" => "#page-login > div.login-wrap > div:nth-child(3) > div.card-body.px-md-2 > form > div:nth-child(1) > div > div > input", + "register_pwd"=> "#page-login > div.login-wrap > div:nth-child(3) > div.card-body.px-md-2 > form > div:nth-child(2) > div > div > input", + "register_re_pwd"=> "#page-login > div.login-wrap > div:nth-child(3) > div.card-body.px-md-2 > form > div:nth-child(3) > div > div > input", + "register_btn"=> "Register", + "register_text"=> "Home", +]; diff --git a/tests/Browser/dusktest/data/product_1.php b/tests/Browser/dusktest/data/product_1.php new file mode 100644 index 00000000..d3201210 --- /dev/null +++ b/tests/Browser/dusktest/data/product_1.php @@ -0,0 +1,10 @@ +"/products/1", + "product_1"=> "Buy Now",//购买商品 + "buy_btn"=> "#product-top > div:nth-child(2) > div > div.quantity-btns > button.btn.btn-dark.ms-3.fw-bold",//购买按钮 + "address_btn"=>"#checkout-address-app > div.checkout-black > div.addresses-wrap > div > div > div > button", //添加地址 + "login_text"=> "Home", +]; + + diff --git a/tests/Browser/dusktest/data/register.php b/tests/Browser/dusktest/data/register.php index 68f85da2..9f5f9f38 100644 --- a/tests/Browser/dusktest/data/register.php +++ b/tests/Browser/dusktest/data/register.php @@ -2,13 +2,13 @@ const true_register = [ - 'email' => 'testtest@163.com', + 'email' => 'test2@163.com', 'password' => '123456', 'assert' => 'Sign Out', ]; const false_register = [ - 'false_email' => 'test@163.com', //已注册的email + 'exist_email' => 'test@163.com', //已注册的email 'illegal_email' => 'test', 'false_password' => '1234567', 'false_assert' => 'User login and registration', diff --git a/tests/Browser/dusktest/page/front/AddressTest.php b/tests/Browser/dusktest/page/front/AddressTest.php new file mode 100644 index 00000000..6b81e37f --- /dev/null +++ b/tests/Browser/dusktest/page/front/AddressTest.php @@ -0,0 +1,63 @@ +browse(function (Browser $browser) { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //当前网址断言 + ->assertUrlIs('http://autotest.test/account', $browser->driver->getCurrentURL()) + //2.点击address + ->clickLink(address['go_address']) + //3.点击添加地址 + ->press(address['add_btn']) + ->pause(3000) + //3.1 name + ->type(address['add_name'], add_address['add_name']) + //3.2 phone + ->type(address['add_phone'], add_address['add_phone']) + //3.3 address + ->type(address['add_address'], add_address['add_name']) + //3.4 code + ->type(address['add_code'], add_address['add_code']) + //3.5 address1 + ->type(address['add_address1'], add_address['add_address2']) + //3.6 address2 + ->type(address['add_address2'], add_address['add_address2']) + //3.7 defaule + ->press((address['default'])) + //3.8 save + ->press((address['save'])) + ->pause(3000) + ->assertSee(address['assert']); + + + ; + //3.向下滑动页面直到找到元素 + + }); + } +} diff --git a/tests/Browser/dusktest/page/front/LoginGrounp.php b/tests/Browser/dusktest/page/front/LoginGrounp.php deleted file mode 100644 index 8bfec4a2..00000000 --- a/tests/Browser/dusktest/page/front/LoginGrounp.php +++ /dev/null @@ -1,148 +0,0 @@ -$scenario(); - } - } - - #1.打开浏览器 - public function openurl() - { - $this->browse(function (Browser $browser) { - $browser->visit(login['login_url']) - ->pause(2000); - }); - } - - #输入正确email - public function true_email() - { - $this->browse(function (Browser $browser) { - $browser->type(login['login_email'], true_login['email']); - }); - } - #输入错误的email - public function false_email() - { - $this->browse(function (Browser $browser) { - $browser->type(login['login_email'], false_login['false_email']); - }); - } - #输入非法的email - public function illegal_email() - { - $this->browse(function (Browser $browser) { - $browser->type(login['login_email'], false_login['illegal_email']); - }); - } - #输入正确的password - public function true_password() - { - $this->browse(function (Browser $browser) { - $browser->type(login['login_pwd'], true_login['password']); - }); - } - #输入错误的password - public function false_password() - { - $this->browse(function (Browser $browser) { - $browser->type(login['login_pwd'], false_login['false_password']); - }); - } - #点击login - public function click_login_btn() - { - $this->browse(function (Browser $browser) { - $browser->press(login['login_btn']); - }); - } - #登录正确断言 - public function true_assert() - { - $this->browse(function (Browser $browser) { - $browser->assertSee(true_login['assert']) - ->pause(3000) - ->quit(); - }); - } - #登录错误断言 - public function false_assert() - { - $this->browse(function (Browser $browser) { - $browser->assertSee(false_login['false_assert']) - ->pause(3000) - ->quit(); - }); - } - #组合测试 - #场景1---密码账号正确 - public function test_login_ful() - { - $this->runScenarios([ - 'openurl', - 'true_email', - 'true_password', - 'click_login_btn'=> function (Browser $browser) { - $browser->pause(1000) // 等待页面跳转 - ->assertPathIs('/account'); - }, - 'true_assert' => function (Browser $browser) { - $browser->assertSee('欢迎回来!'); - }, - ]); - } - #场景2---密码错误、账号正确 - public function test_pwd_error() - { - $this->runScenarios([ - 'openurl', - 'true_email', - 'false_password', - 'click_login_btn', - 'false_assert', - ]); - } - #场景3---密码正确、账号错误 - public function test_email_error() - { - $this->runScenarios([ - 'openurl', - 'false_email', - 'true_password', - 'click_login_btn', - 'false_assert', - ]); - } - -#场景4---密码正确、账号非法 - public function test_email_illegal() - { - $this->runScenarios([ - 'openurl', - 'false_email', - 'illegal_email', - 'click_login_btn', - 'false_assert', - ]); - } -} diff --git a/tests/Browser/dusktest/page/front/LoginTest.php b/tests/Browser/dusktest/page/front/LoginTest.php index 10cd137c..a2b5f357 100644 --- a/tests/Browser/dusktest/page/front/LoginTest.php +++ b/tests/Browser/dusktest/page/front/LoginTest.php @@ -48,7 +48,7 @@ class LoginTest extends DuskTestCase $this->browse(function (Browser $browser) { $browser->visit(login['login_url']) - ->type(login['login_email'], false_login['false_email']) + ->type(login['login_email'], true_login['email']) ->type(login['login_pwd'], false_login['false_password']) ->press(login['login_btn']) ->assertSee(false_login['false_assert']); @@ -60,7 +60,7 @@ class LoginTest extends DuskTestCase $this->browse(function (Browser $browser) { $browser->visit(login['login_url']) - ->type(login['login_email'], false_login['false_email']) + ->type(login['login_email'], true_login['email']) ->press(login['login_btn']) ->assertSee(false_login['false_assert']); }); @@ -71,7 +71,7 @@ class LoginTest extends DuskTestCase $this->browse(function (Browser $browser) { $browser->visit(login['login_url']) - ->type(login['login_pwd'], false_login['false_password']) + ->type(login['login_pwd'], true_login['email']) ->press(login['login_btn']) ->assertSee(false_login['false_assert']); }); diff --git a/tests/Browser/dusktest/page/front/OrderTest.php b/tests/Browser/dusktest/page/front/OrderTest.php new file mode 100644 index 00000000..7918ba54 --- /dev/null +++ b/tests/Browser/dusktest/page/front/OrderTest.php @@ -0,0 +1,54 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(2000) + //当前网址断言 + ->assertUrlIs('http://autotest.test/account', $browser->driver->getCurrentURL()) +//打印查看当前网址 +// $html = $browser->driver->getCurrentURL(); +// print_r($html); +// ->driver->getCurrentURL() + //2.点击home跳转到首页 + ->clickLink(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) +// ->mouseover(index['product_img']) + ->pause(2000) +//点击要购买的商品 + ->press(index['product_img']) + //4.点击购买按钮 + ->press(product['product_1']) + ->pause(5000) + //5.点击确认按钮 + ->press(checkout['submit']) + ->pause(5000) + //6.断言 + ->assertSee(checkout['assert']); + }); + } +} diff --git a/tests/Browser/dusktest/page/front/RegisterFirst.php b/tests/Browser/dusktest/page/front/RegisterFirst.php new file mode 100644 index 00000000..5c51003e --- /dev/null +++ b/tests/Browser/dusktest/page/front/RegisterFirst.php @@ -0,0 +1,37 @@ +browse(function (Browser $browser) { + $browser->visit(login['login_url']) + ->type(register['register_email'], false_register['exist_email']) + ->type(register['register_pwd'], true_register['password']) + ->type(register['register_re_pwd'], true_register['password']) + ->press(register['register_btn']) + ->pause(3000) + ->assertSee(true_register['assert']); + }); + } +} diff --git a/tests/Browser/dusktest/page/front/RegisterTest.php b/tests/Browser/dusktest/page/front/RegisterTest.php index 11c43c6f..d98534ea 100644 --- a/tests/Browser/dusktest/page/front/RegisterTest.php +++ b/tests/Browser/dusktest/page/front/RegisterTest.php @@ -4,7 +4,7 @@ namespace Tests\Browser; namespace App\Http\Controllers; -use Illuminate\Foundation\Testing\RefreshDatabase; + use Laravel\Dusk\Browser; use Tests\DuskTestCase; @@ -13,7 +13,7 @@ require_once(dirname(__FILE__) . '/../../data/login_page.php'); class RegisterTest extends DuskTestCase { - use RefreshDatabase; + /** * A basic browser test example. */ @@ -23,7 +23,7 @@ class RegisterTest extends DuskTestCase { $this->browse(function (Browser $browser) { $browser->visit(login['login_url']) - ->type(register['register_email'], false_register['false_email']) + ->type(register['register_email'], false_register['exist_email']) ->type(register['register_pwd'], true_register['password']) ->type(register['register_re_pwd'], true_register['password']) ->press(register['register_btn']) @@ -102,6 +102,7 @@ class RegisterTest extends DuskTestCase ->type(register['register_pwd'], true_register['password']) ->type(register['register_re_pwd'], true_register['password']) ->press(register['register_btn']) + ->pause(3000) ->assertSee(true_register['assert']); }); }