mercredi 21 octobre 2020

What are the correct Codeception (Selenium server, chromedriver) troubleshooting procedures for mac/php?

Since there is no official troubleshooting information, it is an uphill struggle for anyone without a more complete knowledge of working with similar systems to install.

I want to address issues specifically for OSX Catalina and the Selenium server/Chromedriver configuration and put them all in one place. I'll also include my problem at the end.

It seems to me that most of the problems revolve around:

  • An incorrect installation of either Selenium, Codeception or Chromedriver
  • Conflicting versions of the above (or php?)
  • Problems with the port the Selenium server runs on
  • Coding mistakes: typos, old code etc
  • Lack of knowledge of terminal/java commands
  • Path problems
  • Anything I don't know about/my problem

I'll start with the things I have learnt along the way, please help to fill in the gaps or correct anything I state below if you are able.

Incorrect installation

  • Installing via homebrew seems the most foolproof way.

Selenium

brew install selenium-server-standalone

Chromedriver

brew tap homebrew/cask
brew cask install chromedriver

Then you can run brew doctor to check installation is okay and follow instructions or google issues. More brew commands.

  • Check conflicting versions

Installed Google Chrome and Chromedriver should be the same version.

Check Chrome by going to "Chrome" at the top left of the app and the "about Google Chrome".

Check Chromedriver by running brew info chromedriver

  • Port problems

You might have an old server running on a port you're trying to use. Shut it down going to this page in google chrome.

http://localhost:<port number>/selenium-server/driver?cmd=shutDownSeleniumServer

You can specify the port you run Selenium in terminal using the -port flag. Like this

java -jar <location of your server> -port 8090

Then match this in your acceptance.suite.yml config file

url: 'http://localhost:<port number>/wd/hub'
  • Coding mistakes in config file

The most common ones I've seen is having a slash at the end of the line of code above or not including '/wd/hub'

Formatting is like so:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://192.168.88.100:<port number>/wd/hub'
            browser: chrome
        - \Helper\Acceptance

And to format extensions (automatically run) is like this:

extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            - chromedriver
  • Lack of knowledge of terminal/java commands

Run a codeception test in terminal using

php vendor/bin/codecept run acceptance --steps

You must have first used

cd <location of your code>
  • Paths

I don't know how to go about checking paths are configured correctly. (are they inside config files that point to the other programs?) but I keep seeing hints of them scattered around.

  • My Issue

From below log, I think that chromedriver is loading and there is something happening in the browser, but it does not load my website. Instead it loads the page below. Help greatly appreciated!

Screenshot of loaded test page

Log:

Codeception PHP Testing Framework v4.1.8
Powered by PHPUnit 9.4.2 by Sebastian Bergmann and contributors.
Running with seed: 


Acceptance Tests (1) --------------------------------------------------------------------------------------------------

  [RunProcess] Starting chromedriver
QuizCest: New user_complete quiz
Signature: QuizCest:newUser_completeQuiz
Test: tests/acceptance/QuizCest.php:newUser_completeQuiz
Scenario --
 I am on page "/"
 I see "Fragrant"
 FAIL 

-----------------------------------------------------------------------------------------------------------------------
  [RunProcess] Stopping chromedriver


Time: 00:02.653, Memory: 10.00 MB

There was 1 failure:

---------
1) QuizCest: New user_complete quiz
 Test  tests/acceptance/QuizCest.php:newUser_completeQuiz
 Step  See "Fragrant"
 Fail  Failed asserting that  on page /wd/hub/static/resource/hub.html
--> Sessions
Create Session  |  Refresh Sessions
Chrome
e999201a1381fb966c9d02785c094ae6  |  Capabilities  |  Take Screenshot  |  Delete Session  |  Load Script
 Mac OS X 10.15.7  |  v3.141.59  |  re82be7d358
--> contains "Fragrant".

Scenario Steps:

 2. $I->see("Fragrant") at tests/acceptance/QuizCest.php:14
 1. $I->amOnPage("/") at tests/acceptance/QuizCest.php:13

Artifacts:

Png: /Applications/MAMP/htdocs/fragrantmandarin.com/tests/_output/QuizCest.newUser.completeQuiz.fail.png
Html: /Applications/MAMP/htdocs/fragrantmandarin.com/tests/_output/QuizCest.newUser.completeQuiz.fail.html

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

My Config file:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://localhost:4444/wd/hub'
            browser: chrome
        - \Helper\Acceptance

extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            - chromedriver

step_decorators: ~     

Aucun commentaire:

Enregistrer un commentaire