hjwp / hjwp/Book-TDD-Web-Dev-Python

ch11l032 - Typo in the test / issue with wait_for + truthiness

Open
#116 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
514
Forks
175
PR merge metrics
No merged PRs in 30d

Description

In `ch11l032`, this is introduced, to test the HTML5 validation:

```python
self.wait_for(lambda: self.browser.find_elements_by_css_selector(
'#id_text:invalid'
))
```

However, it isn't testing anything.

Because we are using `find_elementS_by_css_selector(...)` if the element is not found an empty list will be returned and no exception will be raised. Therefore our `wait_for` immediately returns after the first try and we didn't test anything (try making it fail on purpose by looking for a different id, it won't fail).

To fix that, the solution is simple, remove the `S`. That way it'll either find that one element, or raise a `NoSuchElementException`, which is a `WebDriverException`, so our `wait_for` works as expected 🙂

Contributor guide

No contributing guide indexed for this repository

Research direction

Find ch11l032 in the chapter's tests and inspect the wait_for call that uses find_elements_by_css_selector. Change the selector lookup to the singular form, then run the relevant ch11l032 test and verify that a missing invalid element causes the wait to fail rather than returning immediately.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
testing
Issue type
Bug
Difficulty
1/5
Estimated time
Under an hour
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.