PHP code example of sinnbeck / laravel-dom-assertions
1. Go to this page and download the library: Download sinnbeck/laravel-dom-assertions library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sinnbeck / laravel-dom-assertions example snippets
$response = $this->get(route('about'))
->assertOk();
$this->assertMatchesRegularExpression(
'/<li(.)*class="(.)*active(.)*">(.|\n)*About(.|\n)*?<\/li>/',
$response->getContent()
);
$this->get(route('about'))
->assertOk()
->assertElementExists('nav > ul', function(\Sinnbeck\DomAssertions\Asserts\AssertElement $ul) {
$ul->contains('li', [
'class' => 'active',
'text' => 'About'
]);
$ul->doesntContain('li', [
'class' => 'active',
'text' => 'Home'
]);
});
$this->get('/some-route')
->assertElementExists();
$this->get('/some-route')
->assertElementExists('#nav');
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->is('div');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->has('x-data', '{foo: 1}');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->doesntHave('x-data', '{foo: 2}');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->contains('div');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->contains('div:nth-of-type(3)');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->contains('li.list-item', [
'x-data' => 'foobar'
]);
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->doesntContain('li.list-item', [
'x-data' => 'foobar'
]);
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->contains('li.list-item', [
'x-data' => 'foobar'
], 3);
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->contains('li.list-item', 3);
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->find('li.list-item');
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->find('li.nth-of-type(3)', function (AssertElement $element) {
$element->is('li');
});
});
$this->get('/some-route')
->assertElementExists('#overview', function (AssertElement $assert) {
$assert->each('li', function (AssertElement $element) {
$element->has('class', 'list-item');
});
});
$this->get('/some-route')
->assertElementExists(function (AssertElement $element) {
$element->find('div', function (AssertElement $element) {
$element->is('div');
$element->find('p', function (AssertElement $element) {
$element->is('p');
$element->find('#label', function (AssertElement $element) {
$element->is('span');
});
});
$element->find('p:nth-of-type(2)', function (AssertElement $element) {
$element->is('p');
$element->find('.sub-header', function (AssertElement $element) {
$element->is('h4');
});
});
});
});
$this->get('/some-route')
->assertFormExists();
$this->get('/some-route')
->assertFormExists('#users-form');
$this->get('/some-route')
->assertFormExists(null, 'nav .logout-form');
$this->get('/some-route')
->assertFormExists('#form1', function (AssertForm $form) {
$form->hasAction('/logout')
->hasMethod('post');
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->hasAction('/logout')
->hasMethod('post');
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->hasAction('/update-user')
->hasMethod('post')
->hasCSRF()
->hasSpoofMethod('PUT');
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->hasMethod('PUT');
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->has('x-data', 'foo')
$form->hasEnctype('multipart/form-data'); //it also works with magic methods
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->containsInput([
'name' => 'first_name',
'value' => 'Gunnar',
])
->containsTextarea([
'name' => 'comment',
'value' => '...',
]);
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->contains('label', [
'for' => 'username',
])
->containsButton([ //or use a magic method
'type' => 'submit',
]);
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->doesntContain('label', [
'for' => 'username',
]);
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->findSelect('select:nth-of-type(2)', function (AssertSelect $select) {
$select->has('name', 'country');
});
});
$this->get('/some-route')
->assertFormExists(function (AssertForm $form) {
$form->findSelect('select:nth-of-type(2)', function (AssertSelect $select) {
$select->containsOption([
[
'x-data' => 'none',
'value' => 'none',
'text' => 'None',
]
])
->containsOptions(
[
'value' => 'dk',
'text' => 'Denmark',
],
[
'value' => 'us',
'text' => 'USA',
],
);
});
});
$this->get('/some-route')
->assertFormExists('#form1', function (AssertForm $form) {
$form->findSelect('select', function (AssertSelect $select) {
$select->hasValue('da');
});
});
$this->get('/some-route')
->assertFormExists('#form1', function (AssertForm $form) {
$form->findSelect('select', function (AssertSelect $select) {
$select->hasValues(['da', 'en']);
});
});
$this->get('/some-route')
->assertFormExists('#form1', function (AssertForm $form) {
$form->findDatalist('#skills', function (AssertDatalist $list) {
$list->containsOptions(
[
'value' => 'PHP',
],
[
'value' => 'Javascript',
],
);
});
});
Livewire::test(UserForm::class)
->assertElementExists('form', function (AssertElement $form) {
$form->find('#submit', function (AssertElement $assert) {
$assert->is('button');
$assert->has('text', 'Submit');
})->contains('[wire\:model="name"]', 1);
});
$this->view('navigation')
->assertElementExists('nav > ul', function(AssertElement $ul) {
$ul->contains('li', [
'class' => 'active',
]);
});
html
<nav>
<ul>
@foreach ($menuItems as $menuItem)
<li @class([
"p-3 text-white",
"text-blue-500 active" => Route::is($menuItem->route)
])>
<a href="{{route($menuItem->route)}}">{{$menuItem->name}}</a>
</li>
@endforeach
</ul>
</nav>