Slide 1

Slide 1 text

Smarter, Faster Functional Testing

Slide 2

Slide 2 text

About me ✤ Tech lead at SportRadar ✤ Author of Chrome Mink Driver ✤ github.com/adorin ✤ gitlab.com/DMore ✤ @DorianCMore

Slide 3

Slide 3 text

Background

Slide 4

Slide 4 text

End to end Acceptance tests Unit tests

Slide 5

Slide 5 text

End to end

Slide 6

Slide 6 text

PHP Selenium Browser Webserver Database PHP

Slide 7

Slide 7 text

PHP Selenium Browser Webserver Database PHP Emulator

Slide 8

Slide 8 text

PHP Selenium Browser Webserver Database PHP Emulator

Slide 9

Slide 9 text

PHP Selenium Browser Webserver Database PHP KernelDriver

Slide 10

Slide 10 text

CI Runner Queue Feature1 Feature2 Feature6 Feature3 Feature4 Feature5

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

CI Runner Queue Feature1 Feature2 Feature6 Feature3 Feature4 Feature5

Slide 13

Slide 13 text

Runner4 Runner2 Runner3 Runner5 Runner6 Concurrency Queue Feature2 Feature3 Feature6 Feature5 Feature4 Runner Feature1

Slide 14

Slide 14 text

Runner4 Runner2 Runner3 Runner5 Runner6 Runner1 Concurrency Queue Feature1 Feature2 Feature4

Slide 15

Slide 15 text

Runner4 Runner2 Runner3 Runner5 Runner6 Runner1 Concurrency Queue Feature1 c1 Feature1 c2 Feature1 c3 Feature1 c4 Feature2 c1 Feature2 c2 Feature2 c3 Feature2 c4 Feature3 c1 Feature3 c2 Feature3 c3

Slide 16

Slide 16 text

Workflow install dependencies compile assets warm cache up Building stage (1 per branch)

Slide 17

Slide 17 text

Workflow install dependencies compile assets warm cache up Building stage (1 per branch) Upload artifact

Slide 18

Slide 18 text

Runner1 Workflow install dependencies compile assets warm cache up Building stage (1 per branch) Testing stage (4 per branch) Upload artifact test chunk1 Runner2 test chunk2 Download artifact

Slide 19

Slide 19 text

Isolation

Slide 20

Slide 20 text

Runner1 PHP Browser Webserver Database PHP PHP Runner2 Selenium

Slide 21

Slide 21 text

Runner2 Runner1 PHP PHP Webserver PHP Browser Database Selenium Browser Webserver Database PHP Selenium

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Workflow install dependencies compile assets warm cache up Building stage Upload artifact

Slide 24

Slide 24 text

Runner1 Workflow Testing stage test chunk1 Download artifact Runner2 test chunk2

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Optimization

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

PHP Selenium Webdriver HTTP HTTP Browser Native API

Slide 29

Slide 29 text

PHP Socket Browser

Slide 30

Slide 30 text

composer require —dev dmore/chrome-mink-driver:^2.4.0

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

composer require —dev dmore/behat-chrome-extension:^1.0.0

Slide 34

Slide 34 text

Headless chrome

Slide 35

Slide 35 text

PHP ChromeDriver Chrome Webserver Database PHP Chrome headless

Slide 36

Slide 36 text

PHP ChromeDriver Chrome Webserver Database PHP Chrome headless Debug Default (and CI) PHP ChromeDriver Webserver Database PHP

Slide 37

Slide 37 text

PHP ChromeDriver Chrome headless Webserver Database PHP KernelDriver / Goutte

Slide 38

Slide 38 text

Q&A

Slide 39

Slide 39 text

Thank you https://joind.in/talk/7dc2d