Commit Graph

261 Commits

Author SHA1 Message Date
Ingo Schommer ff86bde036 Step definitions for table interactions
Moved from framework module which had GridField specific steps under the same naming.
Made them more versatile, working for both GridField and other <table> nodes.
2014-06-13 15:05:32 +12:00
Jeffrey Guo 27a381f4e0 handle single quote with build-in way in getRegionObj 2014-06-12 14:51:01 +12:00
Ingo Schommer 1af1620fb4 Merge pull request #36 from jeffreyguo/pulls/find-email-by-title
add new step definition to identify multiple emails by from to and title
2014-06-04 13:26:48 +12:00
Ingo Schommer 0694d4e3a3 Merge pull request #39 from srizzling/pulls/fill-in-field-region
Adding support to fill in field in a specfic region
2014-06-04 13:24:50 +12:00
Damian Mooyman 0050149bfa Update to mink 1.6 and remove custom fork
Add javascript-workaround for selecting hidden elements
2014-05-30 16:27:47 +12:00
Jeffrey Guo 86d8139f1b find radiobutton by its type 2014-05-23 11:16:50 +12:00
Sean Harvey b789a3b67c Adding "I follow the link "test", dismissing the dialog" step 2014-05-16 10:35:07 +12:00
Sriram Venkatesh 5e58444e07 Adding support to fill in field in a specfic region 2014-05-07 16:07:21 +12:00
Ingo Schommer 10da00c796 Guard against older jQuery versions 2014-05-07 10:47:29 +12:00
Damian Mooyman a7ae2497d4 API Allow "I select the * radio button" 2014-05-05 13:05:15 +12:00
Jeffrey Guo 29d99e884f add new step definition to identify multiple emails by title 2014-05-01 10:28:20 +12:00
Ingo Schommer 68524346c6 Merge pull request #35 from jeffreyguo/pulls/test-mailer-update
Get the latest email from the email
2014-04-30 17:53:15 +12:00
Jeffrey Guo 4f7b794d9c get the last one email 2014-04-30 17:30:50 +12:00
Ingo Schommer 3b8518e4ab NEW Set current date and time through Behat 2014-04-16 11:14:42 +12:00
Ingo Schommer d313b4ccce Merge pull request #32 from tractorcow/pulls/asset-fixture
API Allow usage of assets with modified / created date specification
2014-04-16 11:12:27 +12:00
madmatt 1a1d5bdead FIX: Invalid Exception throw results in CI failures 2014-04-15 23:56:03 +12:00
Damian Mooyman 2520cb1bbf API Allow usage of assets with modified / created date specification 2014-04-15 09:25:32 +12:00
Sriram Venkatesh 2294ee92a2 Session in undefined 2014-04-09 13:06:35 +12:00
Ingo Schommer 2ec760cb1d Improved region support, added "see text in region" step 2014-04-09 10:31:41 +12:00
Ingo Schommer 6a7df2f702 More resistant login form detection
Had some issues with multiple login forms on the same page,
e.g. for social login, or with duplicated hidden login forms
in the header.
2014-04-07 18:08:56 +12:00
Ingo Schommer 6f0cc7f68e Support multiple login forms on a page
Thanks to Jeffrey Guo for contributing.
2014-04-07 13:03:40 +12:00
Sean Harvey c8120b2785 Don't validate passwords when writing a fake password
Stops existing password validators causing issues with logging in fake
users, as "secret" might not meet complexity requirements.
2014-04-02 22:09:22 +13:00
Ingo Schommer 8211d3f5fc More versatile "press button/link, confirming dialog" 2014-03-31 14:30:49 +13:00
Ingo Schommer e55c6bb22a Fixed key/value confusion on fixture label mapping 2014-03-30 23:02:57 +13:00
Ingo Schommer 415a7d3c87 Allow fields and buttons to be disabled in behat steps 2014-03-26 13:35:41 +13:00
Sriram Venkatesh 2acd0889d4 Find Link in Region 2014-03-19 17:09:43 +13:00
Ingo Schommer 41cdc87eae Import DB and fixtures as a separate step
Usually triggered by manual test session environment runs
2014-03-19 08:42:23 +13:00
Will Rossiter 21b05999ee Prevent undefined method on error 2014-03-03 22:11:04 +13:00
Ingo Schommer ca455423ef Changes required for persisting state directly on disk
applyState() used to persist in memory, which could lead
to outdated state depending on execution flow between CLI
and web requests. Since state is now in a JSON object,
it also fixes the array access.
2014-03-01 18:26:21 +13:00
Ingo Schommer a40896db8b Using TestSessionEnvironment for saving emails
Easier debugging through JSON file inspection,
which can be logged in its entirety more easily
than a database table. It also keeps data in one place.
2014-03-01 14:47:12 +13:00
Ingo Schommer a0517d7680 Better email assertions 2014-02-27 23:02:43 +13:00
Ingo Schommer d09f2353e6 Negation for email assertions 2014-02-26 14:25:53 +13:00
Ingo Schommer d003707894 BEHAT_SCREEN_SIZE env var 2014-02-25 11:33:12 +13:00
Ingo Schommer 7f3cc3b6b9 Using CLI to start test session rather than browser
Now possible because we don't rely on browser session state
to link up state to CLI (recent changes in testsession module).
2014-02-24 22:54:12 +13:00
Sam Minnee 5a7d25e530 FIX: Use executeScript() because we discard the return value.
evaluateScript() injects 'return ' into the executed script, which often breaks multi-line code.
executeScript() is better
2014-02-13 18:08:28 +13:00
Sriram Venkatesh f7125a9eff Added a step for creating a breakpoint 2014-02-12 15:09:19 +13:00
Ingo Schommer 0be032261a Calling destructor on fatal errors
Avoids leaving TESTS_RUNNING.js around
2014-02-09 18:56:40 +13:00
Ingo Schommer 0308dee0dc Merge pull request #23 from madmatt/pulls/TestSessionEnvironment
Update SilverStripeAwareInitializer to use new TestSessionEnvironment class
2014-02-09 18:47:13 +13:00
Mateusz Uzdowski 77d5a3d2e9 NEW Add generic checks for fields being enabled/disabled. 2014-02-07 15:04:43 +13:00
madmatt d61760ddc6 Update SilverStripeAwareInitializer to use new TestSessionEnvironment class.
This change is designed to be merged in at the same time as the matching
testsession PR (silverstripe-labs/silverstripe-testsession#7) is merged in, as
it relies on changes introduced in that PR to function.

This updates the behat-extension to use the new file-based capabilities of the
testsession module. Instead of creating a temp database, it will create an
entire testsession in the initializer, and then continue on as per normal. When
Behat runs end, the cleanup code will completely remove the testsession state,
instead of just removing the temp database. This may mean in the future that
you can hook into the TestSessionEnvironment via extensions, and connect to
other test services during a testsession, then cleanup after yourself on ending
a test session.

API CHANGES:
- Remove SilverStripeAwareInitializer::initializeTempDb()
- Remove SilverStripeAwareInitializer::deleteTempDb()
2014-02-05 11:57:46 +13:00
Ingo Schommer db5dfa0e01 Merge pull request #19 from madmatt/pulls/fix-fixture-parentid
Fix FixtureContext::prepareAsset() assuming Parent exists
2014-01-30 15:06:39 -08:00
Matt fe77d1dacb In stepCreateRecordWithTable, if a fixture already exists then update that record
rather than create a new, identical fixture.
2014-01-31 10:01:31 +13:00
Sriram Venkatesh 26f47d9d58 General Coding Convention Changes 2014-01-27 10:50:20 +13:00
Sriram Venkatesh f5957a0586 Click first visable link 2014-01-27 10:42:14 +13:00
Matt Peel d9d0b4fa93 Fix FixtureContext::prepareAsset() assuming ParentID
In some cases, we want to create an asset that doesn't have a ParentID set. This
fix allows that to happen.
2014-01-07 09:22:49 +13:00
Ingo Schommer 22330d02cb Env var support, documented xdebug usage 2013-12-18 14:58:44 +01:00
Ingo Schommer 58a9d59e7f More flexible EmailContext 2013-12-13 17:52:42 +01:00
Ingo Schommer d79acc457a Fixed Behat scope for "I log in as"
Fixes an issues where multiple "Email" form fields are present
on a page, e.g. through a global login overlay in the header.
2013-12-10 23:28:47 +01:00
Sean Harvey 8141ced2fd BUG Fixing logout issues with steps
stepIAmNotLoggedIn() would previously just kill the test
session, but this has the side effect of losing the current testsession
temporary database, so this causes steps of logging out to fail the
rest of the steps in a scenario.

See https://github.com/silverstripe-labs/silverstripe-behat-extension/pull/12
2013-11-29 00:49:36 +01:00
Ingo Schommer 0a9505e8b2 Merge pull request #15 from halkyon/select_radio
Adding definition for selecting an input by the group's label.
2013-11-28 15:24:43 -08:00
Ingo Schommer aa31606dde Merge pull request #14 from halkyon/message_rework
stepIWillSeeALogInMessage now allows for other form message types.
2013-11-28 15:23:50 -08:00
Sean Harvey 084980ea27 Adding definition for selecting an input by the group's label.
Allows for a step like: `I select "Admins" from "Groups" input group`

Adding it to BasicContext as it seems useful to be used in
other places, not just the CMS admin interface. It could be used
frontend forms that use CheckboxSetField, or OptionsetField,
for example.

Thanks to @srizzling for writing the definition for this step!
2013-11-28 23:18:59 +13:00
Sean Harvey 8da0dbaea5 stepIWillSeeALogInMessage now allows for other form message types.
Not just "bad", but others like "good", "required", and "warning".
2013-11-28 22:54:00 +13:00
Sean Harvey c53a01c652 Don't create a group in iAmLoggedInWithPermissions if already exists. 2013-11-28 22:30:45 +13:00
Ingo Schommer d4006b9735 Allow augmentation of test session state
Useful e.g. to add a 'stubfile' path in a custom feature context.
2013-11-27 19:32:14 +01:00
Ingo Schommer fc6d1ac12b Fixed Behat+SS coding conventions 2013-11-15 17:38:37 +01:00
Sriram Venkatesh 1166991d49 New step: "record last edited at relative date"
Thanks to @srizzling for getting this started in
https://github.com/silverstripe/silverstripe-cms/pull/896
2013-11-15 14:09:24 +01:00
Ingo Schommer 1c950f07de Relative date/time format support
Thanks to @srizzling for getting this started in
https://github.com/silverstripe/silverstripe-cms/pull/896
2013-11-15 14:05:28 +01:00
Ingo Schommer 7d48da31d4 Merge pull request #10 from srizzling/is620
Added delete state to step defination
2013-11-15 02:32:13 -08:00
Ingo Schommer e7e5912f07 FIX: need to upper-case each word, not just first word
Thanks to @jthomerson
See https://github.com/silverstripe-labs/silverstripe-behat-extension/pull/5
2013-11-15 11:30:10 +01:00
Sriram Venkatesh aea5357c23 Fixed up some formatting issues 2013-11-15 16:57:15 +13:00
Sriram Venkatesh 6b7f5f8d3c Added delete state to step defination 2013-11-15 16:15:37 +13:00
Ingo Schommer 3f13791404 Only delete files/folders if they exist on filesystem
This broke "add a folder" in manage-files.feature
2013-11-06 01:22:30 +01:00
Ingo Schommer 7e37cc8e00 New "there should be a file" step 2013-10-23 21:27:54 +02:00
Ingo Schommer 32c7cea104 Clean up files from assets/ after each scenario 2013-10-23 21:27:52 +02:00
Ingo Schommer 9b34e635d8 New "password should be" step 2013-10-22 10:53:29 +02:00
Ingo Schommer 4aef64a789 Fixed email link step quoting and selection 2013-10-22 00:04:25 +02:00
Ingo Schommer a284e3183d New "password should be" step 2013-10-22 00:04:25 +02:00
Ingo Schommer a244986495 "go to <named record>" behat step definition 2013-10-21 13:19:46 +02:00
Ingo Schommer 5ca904ae12 Initializer and custom namespace support 2013-10-18 17:47:33 +02:00
Ingo Schommer 7bb06f0fea Fixed screenshot_path usage
Was referencing outdated $this->context settings
instead of parent context. Still a bit hacky to make
assumptions on parent context, but its difficult to pass
through arguments to subcontexts.
2013-10-09 14:29:42 +02:00
Ingo Schommer 89a72625d4 BasicContext->stepPageCantBeFound 2013-10-02 17:10:13 +02:00
Ingo Schommer 69589bf316 Behat: Remove "start session" log
Need to find a better way to log this, which is not interfering
with the main formatter output
2013-09-14 19:36:12 +02:00
Ingo Schommer a0ac37fa1e More useful fillField() implementation
Was defaulting to the first non-visible
2013-09-14 19:27:19 +02:00
Ingo Schommer f89879836a Step def for "record has the <field> <value>" 2013-09-14 19:20:58 +02:00
Ingo Schommer f18a54afbe stepIPressTheButtonConfirmingTheDialog 2013-08-16 13:32:13 +02:00
Ingo Schommer 2e3d97cbc4 More verbose startsession 2013-08-13 13:04:49 +02:00
Ingo Schommer 6f9352cac4 Use stdout instead of stderror for notices 2013-08-13 13:03:29 +02:00
Ingo Schommer d734586346 Merge remote-tracking branch 'origin/0.1' 2013-07-11 16:02:15 +02:00
Ingo Schommer 0e0c601a4a FixtureContext 5.3.8 compat (wrong usage of is_a()) 2013-07-11 16:00:19 +02:00
Ingo Schommer 3928919964 Using 3.1 compatible Config API for setup
Avoids deprecation notices when testing against master
2013-06-19 12:24:11 +02:00
Ingo Schommer 5e879a88b8 Only match visible buttons in "I press button" step 2013-06-07 16:26:12 +02:00
Ingo Schommer 71245ababd Behat: More informative error on login form not found
"setValue() on a non-object" wasn't very helpful
2013-06-07 16:26:12 +02:00
Sam Minnee 790d086def FIX: Perform error checking on testsession/start.
This fix improves the robustness of the behat tests, ensuring that the testsession has actually
been successfully started before the test kicks off. Although it doesn't fix anything that
wasn't previously broken, it makes environment set-up errors a bit easier to figure out.

It looks for a new status comment in the result of testsession, that is also being added to the
module.
2013-06-07 11:19:42 +12:00
Ingo Schommer aab86a6b08 More verbose fixture step definitions
Too many clashes with other steps otherwise,
e.g. with 'And the preview contains "You can fill"'
2013-06-05 14:17:28 +02:00
Ingo Schommer 55c7f578fd Documentation 2013-06-05 13:34:45 +02:00
Ingo Schommer 1eed512b7d Member and Group fixture support 2013-06-05 13:34:45 +02:00
Ingo Schommer 460ce55d22 Delay UI interactions after ajax to allow browser rendering
merge
2013-06-05 13:34:45 +02:00
Ingo Schommer 8418bea0f8 Step transformations rather than special case step overrides 2013-06-05 13:34:45 +02:00
Ingo Schommer fd9e84006f Use FixtureFactory for YAML, move helpers to FixtureContext, consistently create assets 2013-06-05 13:34:45 +02:00
Ingo Schommer 30ece1347f NEW FixtureContext (#2) 2013-06-05 13:34:42 +02:00
Ingo Schommer e98233db65 NEW Auto-detect base_url from FILE_TO_URL_MAPPING
Removed framework_host since its no longer necessary due to the changed execution logic.
Unfortunately had to subclass the existing Mink Extension class since we can't influence
its config persistence from our own extensions (with a completely separate ContainerBuilder).

Also restructured README to be more focused on execution rather
than diving into deep config concerns early on.
2013-05-09 16:26:24 +02:00
Ingo Schommer 3a34c204c1 Generalized and fixed UploadField handling in behat 2013-04-09 11:32:43 +02:00
Ingo Schommer 72141f4474 3.1 compat 2013-04-09 01:58:34 +02:00
Ingo Schommer b170e621c9 More feedback on which temp db gets created 2012-12-19 15:56:33 +01:00
Ingo Schommer 6c9be905f9 NEW Email testing 2012-12-19 15:56:20 +01:00
Ingo Schommer 95b9408c86 Using new and more flexible 'testsession' module instead of dev/tests/setdb 2012-12-19 15:55:54 +01:00
Ingo Schommer 135ae89617 Removed reconnect to DB on fixture defaults, it breaks state
Specifically, it resets to the standard database config,
rather than the session/cookie state for the temporary database.
2012-12-06 17:40:04 +01:00
Ingo Schommer 90443b64f9 More forgiving syntax for "wait for x seconds" 2012-12-06 17:40:04 +01:00
Ingo Schommer 2dc613f488 Fixed usage of private var from Selenium driver
Changed in selenium master recently
2012-11-28 16:44:09 +01:00
Ingo Schommer 74e0d8cd83 Fixed coding conventions (no functional changes)
Both Symfony and SilverStripe conventions mandate
lower camel case for instance properties
2012-11-18 11:51:00 +01:00
Ingo Schommer feba280470 NEW LocatorProcessor and ClassGuesser to manage modules
Important for running behat tests per-module,
while stil keeping parameters like "base_url" configurable
without modifying behat.yml files in the modules own source code.
2012-11-15 17:42:45 +01:00
Ingo Schommer 046350fcce Suppress DB default record output in behat runs 2012-11-15 16:08:47 +01:00
Ingo Schommer 38a27d2a50 NEW Reduced boilerplate configuration
- Moved all extension-specific conf into its own configuration namespace
- Described configuration via PHP, and added default values
- Removed boilerplate config from README
- Made screenshot_path optional
- Configurable ajax_timeout settings

Note: The DI system plus the initializer+context combo requires insane amounts of code duplication,
will need to be looked at more closely (very little docs on that level of Behat extension available).
2012-11-14 00:29:40 +01:00
Ingo Schommer 66a07442cf Docs about commands and testing dependencies 2012-11-14 00:29:37 +01:00
Ingo Schommer 3ac7e83dae ENHANCEMENT Migrated generic contexts from temporary 'behat-tests' module
The CMS specific context classes will move to framework
2012-11-09 17:34:24 +01:00
Ingo Schommer ee4d8b7381 BUGFIX Flush manifests when bootstrapping tests 2012-11-09 15:46:33 +01:00
Ingo Schommer 99761ac1f9 Fixed paths 2012-11-08 21:51:17 +01:00
Ingo Schommer afcae36eec Resolved vendor confusion, its "SilverStripe", not "Behat"
"Behat" as a vendor namespace is already taken by the project
of the same name.
2012-10-16 22:05:17 +02:00
Michał Ochman dc01926525 BUG add setAjaxEnabledSteps as interface method 2012-08-19 12:22:51 +02:00
Michał Ochman 2e1cfcc65d initial commit 2012-08-15 16:50:19 +02:00