Bird
Raised Fist0
Laravelframework~10 mins

Browser testing with Dusk in Laravel - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start a Dusk browser test session.

Laravel
public function testHomePage() {
    $this->browse(function (Browser $browser) {
        $browser->[1]('/');
    });
}
Drag options to blanks, or click blank then click option'
Aclick
BassertSee
Cvisit
Dtype
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'click' instead of 'visit' to open a page.
Trying to assert text before visiting a page.
2fill in blank
medium

Complete the code to check if the page contains the text 'Welcome'.

Laravel
$browser->[1]('Welcome');
Drag options to blanks, or click blank then click option'
Aclick
Btype
Cvisit
DassertSee
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'click' instead of 'assertSee' to check text.
Using 'type' which is for input fields.
3fill in blank
hard

Fix the error in the code to click a button with the selector '#submit'.

Laravel
$browser->[1]('#submit');
Drag options to blanks, or click blank then click option'
Avisit
Bclick
CassertSee
Dtype
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'visit' which navigates to a URL instead of clicking.
Using 'type' which inputs text instead of clicking.
4fill in blank
hard

Fill both blanks to type 'hello@example.com' into an input with name 'email' and then submit the form.

Laravel
$browser->[1]('input[name="email"]', 'hello@example.com')
        ->[2]('button[type="submit"]');
Drag options to blanks, or click blank then click option'
Atype
Bsubmit
Cclick
Dvisit
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'submit' instead of 'click' on the submit button.
Using 'visit' instead of 'click' to submit.
5fill in blank
hard

Fill all three blanks to assert the current path is '/dashboard', then wait for an element with id 'profile', and finally assert the element contains the text 'User'.

Laravel
$browser->[1]('/dashboard')
        ->[2]('#profile')
        ->[3]('#profile', 'User');
Drag options to blanks, or click blank then click option'
AassertPathIs
BwaitFor
CassertSeeIn
Dvisit
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'visit' instead of 'assertPathIs' to check URL.
Using 'assertSee' instead of 'assertSeeIn' for element-specific text.

Practice

(1/5)
1. What is the primary purpose of Laravel Dusk in web development?
easy
A. To optimize website images for faster loading
B. To automate browser testing by simulating user actions
C. To generate API documentation
D. To create database migrations automatically

Solution

  1. Step 1: Understand Laravel Dusk's role

    Laravel Dusk is designed to automate browser testing by controlling a real browser to simulate user actions like clicking and typing.
  2. Step 2: Compare options with Dusk's purpose

    Options A, B, and C relate to optimization, database, and documentation, which are unrelated to browser testing.
  3. Final Answer:

    To automate browser testing by simulating user actions -> Option B
  4. Quick Check:

    Browser automation = To automate browser testing by simulating user actions [OK]
Hint: Remember: Dusk controls browsers to test user actions [OK]
Common Mistakes:
  • Confusing Dusk with database tools
  • Thinking Dusk generates documentation
  • Assuming Dusk optimizes assets
2. Which of the following is the correct way to start a browser test with Laravel Dusk?
easy
A. $browser->navigate('/home')->expectText('Welcome');
B. $browser->open('/home')->checkText('Welcome');
C. $browser->goTo('/home')->verifyText('Welcome');
D. $browser->visit('/home')->assertSee('Welcome');

Solution

  1. Step 1: Recall Laravel Dusk syntax for visiting pages

    The correct method to visit a page is visit(), and to check text is assertSee().
  2. Step 2: Identify correct method names

    Options B, C, and D use incorrect method names like open(), goTo(), and navigate(), which do not exist in Dusk.
  3. Final Answer:

    $browser->visit('/home')->assertSee('Welcome'); -> Option D
  4. Quick Check:

    Use visit() and assertSee() in Dusk [OK]
Hint: Use visit() to open page and assertSee() to check text [OK]
Common Mistakes:
  • Using non-existent methods like open() or goTo()
  • Confusing assertSee() with verifyText()
  • Mixing up method chaining order
3. Given the following Dusk test code, what will be the result?
$browser->visit('/login')
        ->type('email', 'user@example.com')
        ->type('password', 'secret')
        ->press('Login')
        ->assertPathIs('/dashboard');
medium
A. The test will pass if login redirects to /dashboard
B. The test will fail because type() cannot fill inputs
C. The test will throw a syntax error
D. The test will pass even if the path is not /dashboard

Solution

  1. Step 1: Analyze the test steps

    The test visits the login page, fills email and password fields, presses the Login button, then checks if the browser path is /dashboard.
  2. Step 2: Understand Dusk behavior

    The type() method fills inputs correctly, and assertPathIs() verifies the current URL path. If login redirects to /dashboard, the test passes.
  3. Final Answer:

    The test will pass if login redirects to /dashboard -> Option A
  4. Quick Check:

    Correct input and path check = The test will pass if login redirects to /dashboard [OK]
Hint: type() fills inputs; assertPathIs() checks URL path [OK]
Common Mistakes:
  • Thinking type() cannot fill inputs
  • Assuming assertPathIs() ignores path
  • Confusing syntax errors with runtime failures
4. Identify the error in this Dusk test code snippet:
$browser->visit('/profile')
        ->type('name', 'John Doe')
        ->click('Save')
        ->assertSee('Profile updated');
medium
A. The method click() should be press() to click buttons
B. The type() method cannot fill text inputs
C. assertSee() cannot check text on the page
D. visit() method requires a full URL, not a path

Solution

  1. Step 1: Review Dusk methods for clicking buttons

    In Laravel Dusk, to click a button by its text, the correct method is press(), not click().
  2. Step 2: Validate other methods

    type() fills inputs, assertSee() checks text, and visit() accepts paths, so these are correct.
  3. Final Answer:

    The method click() should be press() to click buttons -> Option A
  4. Quick Check:

    Use press() for buttons, not click() [OK]
Hint: Use press() to click buttons, not click() [OK]
Common Mistakes:
  • Using click() instead of press() for buttons
  • Thinking type() can't fill inputs
  • Believing visit() needs full URL
5. You want to test a form that has a dropdown with options 'Red', 'Green', and 'Blue'. Which Dusk method correctly selects 'Green' before submitting the form?
hard
A. $browser->pick('color', 'Green')->press('Submit');
B. $browser->choose('color', 'Green')->press('Submit');
C. $browser->select('color', 'Green')->press('Submit');
D. $browser->set('color', 'Green')->press('Submit');

Solution

  1. Step 1: Recall the method to select dropdown options in Dusk

    The correct method to select an option from a dropdown is select().
  2. Step 2: Verify other options are invalid

    Methods like choose(), pick(), and set() do not exist or are incorrect for dropdown selection in Dusk.
  3. Final Answer:

    $browser->select('color', 'Green')->press('Submit'); -> Option C
  4. Quick Check:

    Use select() for dropdowns in Dusk [OK]
Hint: Use select() to pick dropdown options before pressing buttons [OK]
Common Mistakes:
  • Using choose() or pick() instead of select()
  • Trying to set dropdown value with set()
  • Forgetting to press the submit button