Acceptance Testing and Javascript (Part 1 of 2)

In this video we are going to look at how we can use Codeception's Acceptance testing facilities to ensure that webpages that contain JavaScript are working as expected.

Codeception's default acceptance testing module - the PhpBrowser - will not actually test our webpages using a proper browser. So, whilst it will be happily able to browse your webpages, it won't truthfully be a real world / human viewing your site type experience.

This highlights an issue that may otherwise confuse you. If, for example, we are using our JavaScript to show / hide text that exists in the page when it has been rendered by our Symfony controller - that is to say, the template contains text that is hidden using CSS - then the PhpBrowser will not be able to differentiate between whether this text is correctly displayed or not. It will simply read the HTML, spot the text which matches what it expects to see, and reports back that it saw the text.

The inverse of this situation will throw the unexpected error. That is, if the text is hidden by your CSS stylesheet, and you ask Codeception to ensure it does not see:


Then it will confusingly still see it, because the text is there in the HTML. Codeception's PhpBrowser doesn't truly use your web page like a human.

Of course, I wouldn't be telling you all this if we didn't have a handy fix for this problem, so watch on to find out exactly how we can work round this.

Code For This Course

Get the code for this course.

Code For This Video

Get the code for this video.


# Title Duration
1 Installing Codeception in Your Symfony 2 Project 04:20
2 Bootstrapping Codeception 02:09
3 Codeception's Folder Structure 06:43
4 Generating Tests 06:28
5 How to Run Codeception Tests 02:44
6 Our First Acceptance Test 08:00
7 An Alternative Perspective on Acceptance Testing 04:33
8 Acceptance Testing Symfony Forms 08:22
9 Acceptance Testing and Javascript (Part 1 of 2) 07:31
10 Acceptance Testing and Javascript (Part 2 of 2) 08:06
11 An Introduction to Unit Testing in Codeception 04:24
12 Unit Testing a Symfony Service 11:59
13 Integration with Symfony 2 06:27
14 Databases and Unit Tests 14:21
15 Real World Unit Testing - Database Clean Up Issues 06:15
16 Fast PHP Unit Testing with SQLite Database 10:19
17 Mocking the Entity Manager 20:22
18 Codeception Selenium Setup 06:08
19 How to Setup XDebug with PHPStorm 07:36
20 Step Objects and Page Objects 09:35
21 Fizz Buzz Kata 24:43
22 Code Coverage Reports 10:30
23 Running Acceptance Tests Faster With Phantom JS 01:30
24 Mobile Browser Tests 01:18