Testing an image file upload for Drupal 8 with Behat, maddeningly requiring a web driver with JavaScript
For a how-to, see Using JavaScript in Behat tests (manual steps for installing, running).
For my stumbling around in the dark... read on.
On the unenviable proposition of having to add JavaScript support to Behat
behat mink extension cannot find fields
Claims it will find it on id, name, anything, and that looks straightforward:
http://mink.behat.org/en/latest/guides/traversing-pages.html
My problem was not what other people had: http://stackoverflow.com/questions/27288332/why-behat-mink-cantt-find-input-field-by-id-only-by-name
For me it seems to only work when i search for the field by label
mink js
phantomjs behat
uploading file with phantomjs
PhantomJs looks the easiest to install (just download, no Java or npm): http://phantomjs.org/download.html
And use like this:
https://github.com/jmauerhan/phantomjs-behat-selenium-example
With feature https://github.com/jmauerhan/phantomjs-behat-selenium-example/blob/master/features/hello-world.feature
So PhantomJS is working ... but not for uploading the image it seems. At least, it doesn't care if i gave it a nonexistent filename, it never causes the alt text field to show up...
Here's how it's probably doing it under the hood-- don't know where to look to see how Behat maps to PhantomJS
http://phantomjs.org/api/webpage/method/upload-file.html
The issues other people have is it hanging indefinitely:
- https://github.com/webdriverio/webdriverio/issues/204
- PhantomJS hanging on file upload (multiple) https://github.com/detro/ghostdriver/issues/282
Whereas my problem seems to be it skips right over without checking if it worked... or possibly even trying in the first place, i don't know.
drupal 8 "Alternative text" for image requires JavaScript
Should the Alternative text field for images really require JavaScript to input? It seems rather anti-accessibility.
@javascript
@api
Scenario: A content editor can add an image paragraph
Given I am logged in as a user with the "content_editor" role
And I go to "/node/add/work"
When I fill in "Title" with "The Checklist Manifesto"
And I select the radio button "Training"
And I press the "List additional actions" button
And I press the "Add Image" button
And I wait for AJAX to finish
Then I should not see the text "Alternative text"
And I fill in "This is not actually a video grid" for "Caption"
And I attach the file "Video-Grid-Item.png" to "Image"
And I wait for AJAX to finish
Then I should see the error message containing "File upload error"
Then I should see the text "Alternative text"
And I wait for AJAX to finish
And I fill in "A video grid item" for "Alternative text"
OK i got this error trying to add an image myself:
File upload error. Could not move uploaded file.
This value should not be null.
So probably that's why the alternative text field isn't showing up.
I wish behat tests would automatically tell you what status codes they get, what error messages they see etc. when they fail.
See also:
https://davidwinter.me/testing-javascript-websites-with-behat/
Comments
THANK YOU.
I've been looking into the google's third result page because I couldn't find a way to launch Selenium / handle ajax in general, and you sent me to the phantomJS path, and it FREAKING WORKS!!
Post new comment