Я пытаюсь проверить свою форму входа в сумерках. На интерфейсе я использую компонент vue. Когда я пытаюсь получить доступ к вводу электронной почты и установить значение, я получаю сообщение об ошибке:
1) Tests\Browser\LoginTest::testExample
Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body [dusk="login-email"]"}
(Session info: headless chrome=84.0.4147.105)
Форма входа:
<form @submit.prevent="submitForm" class="q-mt-lg">
<div class="col q-mb-md">
<q-input
v-model="formData.email"
outlined
type="email"
dusk="login-email"
class="col"
data-email
label="Email"
ref="email"
stack-label
:rules="[ val => validateEmail(val) || 'Please enter a valid email address']"
lazy-rules />
</div>
<div class="col q-mb-md">
<q-input
v-model="formData.password"
type="password"
dusk="login-password"
outlined
class="col"
label="Password"
ref="password"
stack-label
:rules="[ val => val.length >= 8 || 'Password must be at least 8 characters']"
lazy-rules />
</div>
<div class="row">
<q-btn
type="submit"
dusk="login-btn"
name="login"
class="login"
color="primary"
label="Login" />
</div>
</form>
Мой тест :
<?php
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use App\User;
class LoginTest extends DuskTestCase
{
/**
* A Dusk test example.
*
* @return void
*/
public function testExample()
{
$this->browse(function ($browser) {
$browser->visit('/login')
->type('@login-email', 'test@test.com')
->type('@login-password', '12345678')
->press('@login-btn')
->assertPathIs('/');
});
}
}
Мой проект работает на http://localhost: 3002
В файле .env - APP_URL = http://localhost
В DuskTestCase. php
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--window-size=1920,1080',
'--no-sandbox'
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
Если я изменю APP_URL на http://localhost: 3002, ошибка будет такой же. Вы можете мне помочь с этим вопросом? Спасибо!