diff --git a/.travis.yml b/.travis.yml
index f27fa0d..ae34f3b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,121 +25,26 @@ matrix:
     - env: UPGRADE=7.x-1.0-rc3
 
 install:
-  # Add the Google Chrome packages.
-  - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
-  - sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
-  - sudo apt-get update > /dev/null
+  # Make some variables available to the travis-ci.sh script.
+  - export UPDATE TRAVIS_BUILD_DIR
 
-  # Create a database for our Drupal site.
-  - "mysql -e 'create database drupal;'"
+  # Copy the script into a stable location.
+  - cp scripts/travis-ci.sh $HOME/
 
-  # Install the latest Drush 6.
-  - export PATH="$HOME/.composer/vendor/bin:$PATH"
-  - composer global require --prefer-source --no-interaction drush/drush:6.*
-  - drush dl -y drupalorg_drush-7.x-1.x-dev --destination=$HOME/.drush
-  - drush cc drush
+  # Move to the directory above, where we should remain.
+  - cd ..
 
-  # Build Behat dependencies
-  - cd ./tests/behat
-  - composer install --prefer-source --no-interaction
-  - cd ../../../
-
-  # Build Codebase
-  - mkdir profiles
-  - mv panopoly profiles/
-  - mkdir drupal
-  - mv profiles drupal/
-
-  # Build the current branch.
-  - cd drupal
-  - drush make --yes profiles/panopoly/drupal-org-core.make --prepare-install
-  - drush make --yes profiles/panopoly/drupal-org.make --no-core --contrib-destination=profiles/panopoly
-  - drush dl panopoly_demo-1.x-dev
-  - drush dl diff
-  - mkdir sites/default/private
-  - mkdir sites/default/private/files
-  - mkdir sites/default/private/temp
-  - cd ../
-
-  # Verify that all the .make files will work on Drupal.org.
-  - drush verify-makefile drupal/profiles/panopoly/drupal-org.make
-  - find drupal/profiles/panopoly/modules -name \*.make -print0 | xargs -0 -n1 drush verify-makefile
-
-  # Download an old version to test upgrading from.
-  - if [[ "$UPGRADE" != none ]]; then drush dl panopoly-$UPGRADE; fi
-
-  # Setup files
-  - sudo chmod -R 777 drupal/sites/all
-
-  # Setup display for Selenium
-  - export DISPLAY=:99.0
-  - sh -e /etc/init.d/xvfb start
-  - sleep 5
-
-  # Get Chrome and ChromeDriver
-  - sudo apt-get install google-chrome-stable
-  - wget http://chromedriver.storage.googleapis.com/2.9/chromedriver_linux64.zip
-  - unzip -a chromedriver_linux64.zip
-
-  # Insane hack from jsdevel:
-  #   https://github.com/jsdevel/travis-debugging/blob/master/shim.bash
-  # This allows chrome-sandbox to work in side of OpenVZ, because I can't
-  # figure out how to start chrome with --no-sandbox.
-  - export CHROME_SANDBOX=/opt/google/chrome/chrome-sandbox
-  - sudo rm -f $CHROME_SANDBOX
-  - sudo wget https://googledrive.com/host/0B5VlNZ_Rvdw6NTJoZDBSVy1ZdkE -O $CHROME_SANDBOX
-  - sudo chown root:root $CHROME_SANDBOX; sudo chmod 4755 $CHROME_SANDBOX
-  - sudo md5sum $CHROME_SANDBOX
-
-  # Get Selenium
-  - wget http://selenium-release.storage.googleapis.com/2.41/selenium-server-standalone-2.41.0.jar
-  - java -jar selenium-server-standalone-2.41.0.jar -Dwebdriver.chrome.driver=`pwd`/chromedriver > /dev/null 2>&1 &
-  - sleep 5
- 
-  # Disable sendmail
-  - echo sendmail_path=`which true` >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
+  # Start by doing system installation.
+  - $HOME/travis-ci.sh system-install
 
 before_script:
-
-  # Hack to get the correct version of Panopoly Demo (there was no 1.0-rc4 or 1.0-rc5)
-  - UPGRADE_DEMO_VERSION=`echo $UPGRADE | sed -e s/^7.x-//`
-  - case $UPGRADE_DEMO_VERSION in 1.0-rc[45]) UPGRADE_DEMO_VERSION=1.0-rc3;; esac
-
-  # Do the site install (either the current revision or old for the upgrade).
-  - if [[ "$UPGRADE" == none ]]; then cd drupal; else cd panopoly-$UPGRADE; drush dl panopoly_demo-$UPGRADE_DEMO_VERSION; fi
-  - drush si panopoly --db-url=mysql://root:@127.0.0.1/drupal --account-name=admin --account-pass=admin --site-mail=admin@example.com --site-name="Panopoly" --yes
-  - drush dis -y dblog
-  - drush vset -y file_private_path "sites/default/private/files"
-  - drush vset -y file_temporary_path "sites/default/private/temp"
-  - cd ../drupal
-
-  # If we're an upgrade test, run the upgrade process.
-  - if [[ "$UPGRADE" != none ]]; then cp -a ../panopoly-$UPGRADE/sites/default/* sites/default/ && drush updb --yes; drush cc all; fi
-
-  - drush runserver --server=builtin 8888 > /dev/null 2>&1 &
-  - SERVER_PID=$!
-  - sleep 3
-  - cd profiles/panopoly/tests/behat
-
-  # Make the Travis tests repos agnostic by injecting drupal_root with BEHAT_PARAMS
-  - BUILD_OWNER=`dirname $TRAVIS_BUILD_DIR`
-  - export BEHAT_PARAMS="extensions[Drupal\\DrupalExtension\\Extension][drupal][drupal_root]=$BUILD_OWNER/drupal"
+  - $HOME/travis-ci.sh before-tests
 
 script:
-
-  # If this isn't an upgrade, we test if any features are overridden.
-  - if [[ "$UPGRADE" == none ]]; then ../../scripts/check-overridden.sh; fi
-
-  # First, run all the tests in Firefox.
-  - ./bin/behat --config behat.travis.yml
-
-  # Then run some Chrome-only tests.
-  - ./bin/behat --config behat.travis.yml -p chrome
+  - $HOME/travis-ci.sh run-tests
 
 after_script:
-
-  # Stop the webserver so that it's not still running when MySQL is stopped.
-  - kill $SERVER_PID
+  - $HOME/travis-ci.sh after-tests
 
 notifications:
   email:
diff --git a/scripts/travis-ci.sh b/scripts/travis-ci.sh
new file mode 100644
index 0000000..476afef
--- /dev/null
+++ b/scripts/travis-ci.sh
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+COMMAND=$1
+BUILD_TOP=`dirname $TRAVIS_BUILD_DIR`
+EXIT_VALUE=0
+
+export PATH="$HOME/.composer/vendor/bin:$PATH"
+export DISPLAY=:99.0
+export CHROME_SANDBOX=/opt/google/chrome/chrome-sandbox
+
+##
+# SCRIPT COMMANDS
+##
+
+# system-install
+#
+# This is meant to setup the server on Travis-CI so that it can run the tests.
+#
+system_install() {
+  # Add the Google Chrome packages.
+  header Setting up APT
+  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
+  sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
+  sudo apt-get update > /dev/null
+
+  # Create a database for our Drupal site.
+  mysql -e 'create database drupal;'
+
+  # Install the latest Drush 6.
+  header Installing Drush
+  composer global require --prefer-source --no-interaction drush/drush:6.*
+  drush dl -y drupalorg_drush-7.x-1.x-dev --destination=$HOME/.drush
+  drush cc drush
+
+  # Build Behat dependencies
+  header Installing Behat
+  cd panopoly/tests/behat
+  composer install --prefer-source --no-interaction
+  cd ../../..
+
+  # Build Codebase
+  mkdir profiles
+  mv panopoly profiles/
+  mkdir drupal
+  mv profiles drupal/
+
+  # Build the current branch.
+  header Building Panopoly from current branch
+  cd drupal
+  drush make --yes profiles/panopoly/drupal-org-core.make --prepare-install
+  drush make --yes profiles/panopoly/drupal-org.make --no-core --contrib-destination=profiles/panopoly
+  drush dl panopoly_demo-1.x-dev
+  drush dl diff
+  mkdir sites/default/private
+  mkdir sites/default/private/files
+  mkdir sites/default/private/temp
+  cd ../
+
+  # Verify that all the .make files will work on Drupal.org.
+  header Verifying .make file
+  drush verify-makefile drupal/profiles/panopoly/drupal-org.make
+  find drupal/profiles/panopoly/modules -name \*.make -print0 | xargs -0 -n1 drush verify-makefile
+
+  # Download an old version to test upgrading from.
+  if [[ "$UPGRADE" != none ]]; then
+    header Downloading Panopoly $UPGRADE
+    drush dl panopoly-$UPGRADE
+  fi
+
+  # Setup files
+  sudo chmod -R 777 drupal/sites/all
+
+  # Setup display for Selenium
+  header Starting X
+  sh -e /etc/init.d/xvfb start
+  sleep 5
+
+  # Get Chrome and ChromeDriver
+  header Installing Google Chrome
+  sudo apt-get install google-chrome-stable
+  wget http://chromedriver.storage.googleapis.com/2.9/chromedriver_linux64.zip
+  unzip -a chromedriver_linux64.zip
+
+  # Insane hack from jsdevel:
+  #   https://github.com/jsdevel/travis-debugging/blob/master/shim.bash
+  # This allows chrome-sandbox to work in side of OpenVZ, because I can't
+  # figure out how to start chrome with --no-sandbox.
+  sudo rm -f $CHROME_SANDBOX
+  sudo wget https://googledrive.com/host/0B5VlNZ_Rvdw6NTJoZDBSVy1ZdkE -O $CHROME_SANDBOX
+  sudo chown root:root $CHROME_SANDBOX
+  sudo chmod 4755 $CHROME_SANDBOX
+  sudo md5sum $CHROME_SANDBOX
+
+  # Get Selenium
+  header Downloading Selenium
+  wget http://selenium-release.storage.googleapis.com/2.41/selenium-server-standalone-2.41.0.jar
+ 
+  # Disable sendmail
+  echo sendmail_path=`which true` >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
+}
+
+# before_tests
+#
+# Setup Drupal to run the tests.
+#
+before_tests() {
+  # Hack to get the correct version of Panopoly Demo (there was no 1.0-rc4 or 1.0-rc5)
+  UPGRADE_DEMO_VERSION=`echo $UPGRADE | sed -e s/^7.x-//`
+  case $UPGRADE_DEMO_VERSION in
+    1.0-rc[45])
+      UPGRADE_DEMO_VERSION=1.0-rc3
+      ;;
+  esac
+
+  # Do the site install (either the current revision or old for the upgrade).
+  header Installing Drupal
+  if [[ "$UPGRADE" == none ]]; then
+    cd drupal
+  else
+    cd panopoly-$UPGRADE
+    drush dl panopoly_demo-$UPGRADE_DEMO_VERSION
+  fi
+  drush si panopoly --db-url=mysql://root:@127.0.0.1/drupal --account-name=admin --account-pass=admin --site-mail=admin@example.com --site-name="Panopoly" --yes
+  drush dis -y dblog
+  drush vset -y file_private_path "sites/default/private/files"
+  drush vset -y file_temporary_path "sites/default/private/temp"
+  cd ../drupal
+
+  # If we're an upgrade test, run the upgrade process.
+  if [[ "$UPGRADE" != none ]]; then
+    header Upgrading to latest version
+    cp -a ../panopoly-$UPGRADE/sites/default/* sites/default/ && drush updb --yes
+    drush cc all
+  fi
+
+  # Run the webserver
+  header Starting webserver
+  drush runserver --server=builtin 8888 > /dev/null 2>&1 &
+  echo $! > /tmp/web-server-pid
+  sleep 3
+
+  cd ..
+
+  # Run the selenium server
+  header Starting selenium
+  java -jar selenium-server-standalone-2.41.0.jar -Dwebdriver.chrome.driver=`pwd`/chromedriver > /dev/null 2>&1 &
+  echo $! > /tmp/selenium-server-pid
+  sleep 5
+}
+
+# before_tests
+#
+# Run the tests.
+#
+run_tests() {
+  header Running tests
+
+  # Make the Travis tests repos agnostic by injecting drupal_root with BEHAT_PARAMS
+  export BEHAT_PARAMS="extensions[Drupal\\DrupalExtension\\Extension][drupal][drupal_root]=$BUILD_TOP/drupal"
+
+  cd drupal/profiles/panopoly/tests/behat
+
+  # If this isn't an upgrade, we test if any features are overridden.
+  if [[ "$UPGRADE" == none ]]; then
+    run_test ../../scripts/check-overridden.sh
+  fi
+
+  # First, run all the tests in Firefox.
+  run_test ./bin/behat --config behat.travis.yml
+
+  # Then run some Chrome-only tests.
+  run_test ./bin/behat --config behat.travis.yml -p chrome
+}
+
+# after_tests
+#
+# Clean up after the tests.
+#
+after_tests() {
+  header Cleaning up after tests
+
+  WEB_SERVER_PID=`cat /tmp/webserver-server-pid`
+  SELENIUM_SERVER_PID=`cat /tmp/selenium-server-pid`
+
+  # Stop the servers we started
+  kill $WEB_SERVER_PID
+  kill $SELENIUM_SERVER_PID
+}
+
+##
+# UTILITY FUNCTIONS:
+##
+
+# Prints a message about the section of the script.
+header() {
+  set +xv
+  echo
+  echo "** $@"
+  echo
+  set -xv
+}
+
+# Sets the exit level to error.
+set_error() {
+  EXIT_VALUE=1
+}
+
+# Runs a command and sets an error if it fails.
+run_test() {
+  if ! $@; then
+    set_error
+  fi
+}
+
+# Runs a command showing all the lines executed
+run_command() {
+  set -xv
+  $@
+  set +xv
+}
+
+##
+# SCRIPT MAIN:
+##
+
+# Capture all errors and set our overall exit value.
+trap 'set_error' ERR
+
+# We want to always start from the same directory:
+cd $BUILD_TOP
+
+case $COMMAND in
+  system-install)
+    run_command system_install
+    ;;
+
+  drupal-install)
+    run_command drupal_install
+    ;;
+
+  before-tests)
+    run_command before_tests
+    ;;
+
+  run-tests)
+    run_command run_tests
+    ;;
+
+  after-tests)
+    run_command after_tests
+    ;;
+esac
+
+exit $EXIT_VALUE
diff --git a/tests/behat/behat.template.yml b/tests/behat/behat.template.yml
index 419f221..451bd1c 100644
--- a/tests/behat/behat.template.yml
+++ b/tests/behat/behat.template.yml
@@ -15,6 +15,9 @@ default:
         drupal_root: '/path/to/drupal/root'
       api_driver: 'drupal'
       region_map:
+        # The region on panopoly_page where the body appears (frequently
+        # customized on child distributions).
+        Panopoly Page Content: '.bryant-content'
         # Regions for Panopoly Layouts
         Boxton Content: ".boxton-content"
         Bryant Content: ".bryant-content"
diff --git a/tests/behat/behat.travis.yml b/tests/behat/behat.travis.yml
index d688cfe..5e1e1e3 100644
--- a/tests/behat/behat.travis.yml
+++ b/tests/behat/behat.travis.yml
@@ -19,6 +19,9 @@ default:
       #  drupal_root: "/path/to/drupal/root"
       api_driver: 'drupal'
       region_map:
+        # The region on panopoly_page where the body appears (frequently
+        # customized on child distributions).
+        Panopoly Page Content: '.bryant-content'
         # Regions for Panopoly Layouts
         Boxton Content: ".boxton-content"
         Bryant Content: ".bryant-content"
diff --git a/tests/behat/features/bootstrap/FeatureContext.php b/tests/behat/features/bootstrap/FeatureContext.php
index bb9341f..38007cf 100644
--- a/tests/behat/features/bootstrap/FeatureContext.php
+++ b/tests/behat/features/bootstrap/FeatureContext.php
@@ -28,7 +28,7 @@ class FeatureContext extends DrupalContext
 
   /**
    * Initializes context.
-   * Every scenario gets it's own context object.
+   * Every scenario gets its own context object.
    *
    * @param array $parameters context parameters (set them up through behat.yml)
    */
diff --git a/tests/behat/features/contentitem_widget.feature b/tests/behat/features/contentitem_widget.feature
index b18d25e..b58f52e 100644
--- a/tests/behat/features/contentitem_widget.feature
+++ b/tests/behat/features/contentitem_widget.feature
@@ -10,7 +10,7 @@ Feature: Add content item
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add content item"
+      And I click "Add content item" in the "CTools modal" region
     Then I should see "Configure new Add content item"
     When I fill in the following:
       | exposed[title]        | Lovely Vegetables  |
diff --git a/tests/behat/features/contentlist_widget.feature b/tests/behat/features/contentlist_widget.feature
index 292d9b1..90aaed1 100644
--- a/tests/behat/features/contentlist_widget.feature
+++ b/tests/behat/features/contentlist_widget.feature
@@ -10,7 +10,7 @@ Feature: Add content list widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add content list"
+      And I click "Add content list" in the "CTools modal" region
     Then I should see "Configure new Add content list"
       When I fill in the following:
        | widget_title    | Content Page List Asc 1 |
diff --git a/tests/behat/features/contentpage.feature b/tests/behat/features/contentpage.feature
index 1fda335..6b0c749 100644
--- a/tests/behat/features/contentpage.feature
+++ b/tests/behat/features/contentpage.feature
@@ -14,7 +14,10 @@ Feature: Add content page
 
   @api
   Scenario: Add a content page
-    When I press "Publish"
+    # Normally, here we'd press "Publish", however some child distribtions
+    # don't use 'save_draft', and this makes this test compatible with them.
+    #When I press "Publish"
+    When I press "edit-submit"
     Then the "h1" element should contain "Testing title"
 
   @api @javascript
@@ -33,7 +36,8 @@ Feature: Add content page
       And I attach the file "screenshot.png" to "files[field_featured_image_und_0]"
     Then I should not see "The specified file panopoly.png could not be uploaded. The image is too small; the minimum dimensions are 300x200 pixels."
     When I fill in "Alt Text" with "Panopoly rocks"
-      And I press "Publish"
+      #And I press "Publish"
+      And I press "edit-submit"
     Then I should see the link "Edit" in the "Tabs" region
     When I click "Edit" in the "Tabs" region
     Then the "field_featured_image[und][0][alt]" field should contain "Panopoly rocks"
diff --git a/tests/behat/features/file_widget.feature b/tests/behat/features/file_widget.feature
index c1dba05..df3beb1 100644
--- a/tests/behat/features/file_widget.feature
+++ b/tests/behat/features/file_widget.feature
@@ -9,7 +9,7 @@ Feature: Add a file to a page
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add file"
+      And I click "Add file" in the "CTools modal" region
     Then I should see "Configure new Add file"
 
   @api @javascript
diff --git a/tests/behat/features/image_widget.feature b/tests/behat/features/image_widget.feature
index 9cad0d7..8717de3 100644
--- a/tests/behat/features/image_widget.feature
+++ b/tests/behat/features/image_widget.feature
@@ -10,7 +10,7 @@ Feature: Add image widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add image"
+      And I click "Add image" in the "CTools modal" region
     Then I should see "Configure new Add image"
     When I fill in the following:
       | Title   | Testing image widget title |
diff --git a/tests/behat/features/linkit.feature b/tests/behat/features/linkit.feature
index 3d7fa70..d83d3ac 100644
--- a/tests/behat/features/linkit.feature
+++ b/tests/behat/features/linkit.feature
@@ -21,8 +21,11 @@ Feature: Link to page on the site
     When I click "Attributes"
       And I fill in "edit-linkit-title" with "Testing title"
       And I press "Insert link"
-      And I press "Publish"
-    Then I should see "Linkit Target" in the "a" element with the "title" attribute set to "Testing title" in the "Bryant Content" region
+      # Normally, here we'd press "Publish", however some child distribtions
+      # don't use 'save_draft', and this makes this test compatible with them.
+      #And I press "Publish"
+      And I press "edit-submit"
+    Then I should see "Linkit Target" in the "a" element with the "title" attribute set to "Testing title" in the "Panopoly Page Content" region
     When I click "Linkit Target"
     Then the "h1" element should contain "Linkit Target"
 
@@ -33,7 +36,10 @@ Feature: Link to page on the site
       And I click "Attributes"
       And I fill in "edit-linkit-title" with "Testing title"
       And I press "Insert link"
-      And I press "Publish"
-    Then I should see "https://drupal.org/project/panopoly" in the "a" element with the "title" attribute set to "Testing title" in the "Bryant Content" region
+      # Normally, here we'd press "Publish", however some child distribtions
+      # don't use 'save_draft', and this makes this test compatible with them.
+      #And I press "Publish"
+      And I press "edit-submit"
+    Then I should see "https://drupal.org/project/panopoly" in the "a" element with the "title" attribute set to "Testing title" in the "Panopoly Page Content" region
     When I click "https://drupal.org/project/panopoly"
     Then the "h1" element should contain "Panopoly"
diff --git a/tests/behat/features/links_widget.feature b/tests/behat/features/links_widget.feature
index 9984810..9504009 100644
--- a/tests/behat/features/links_widget.feature
+++ b/tests/behat/features/links_widget.feature
@@ -10,7 +10,7 @@ Feature: Add links widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add links"
+      And I click "Add links" in the "CTools modal" region
     Then I should see "Configure new Add links"
     When I fill in the following:
       | title                                  | Testing link title  |      
diff --git a/tests/behat/features/livepreview.feature b/tests/behat/features/livepreview.feature
index 542afee..0d23bc7 100644
--- a/tests/behat/features/livepreview.feature
+++ b/tests/behat/features/livepreview.feature
@@ -10,7 +10,7 @@ Feature: Live preview
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add table"
+      And I click "Add table" in the "CTools modal" region
     Then I should see "Configure new Add table"
     When I fill in "Title" with "Widget title"
       And I wait for live preview to finish
@@ -43,7 +43,7 @@ Feature: Live preview
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add content list"
+      And I click "Add content list" in the "CTools modal" region
     Then I should see "Configure new Add content list"
     When I fill in "widget_title" with "Content list widget"
       And I wait for live preview to finish
@@ -113,7 +113,7 @@ Feature: Live preview
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add text"
+      And I click "Add text" in the "CTools modal" region
     Then I should see "Configure new Add text"
     When I fill in "Title" with "Widget title"
     Then I should not see "Widget title" in the "Live preview" region
@@ -128,7 +128,7 @@ Feature: Live preview
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add spotlight"
+      And I click "Add spotlight" in the "CTools modal" region
     Then I should see "Configure new Add spotlight"
     When I fill in "Description" with "Testing description"
       And I wait for live preview to finish
diff --git a/tests/behat/features/maps_widget.feature b/tests/behat/features/maps_widget.feature
index e4f5516..af9218e 100644
--- a/tests/behat/features/maps_widget.feature
+++ b/tests/behat/features/maps_widget.feature
@@ -10,7 +10,7 @@ Feature: Add map widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add map"
+      And I click "Add map" in the "CTools modal" region
     Then I should see "Configure new Add map"
     When I fill in the following:
       | Title       | Widget title            |
diff --git a/tests/behat/features/pathauto.feature b/tests/behat/features/pathauto.feature
index 7790ca9..59b8685 100644
--- a/tests/behat/features/pathauto.feature
+++ b/tests/behat/features/pathauto.feature
@@ -11,7 +11,10 @@
         | Title               | Testing title |
         | Editor              | plain_text    |
         | body[und][0][value] | Testing body  |
-      And I press "Publish"
+    # Normally, here we'd press "Publish", however some child distribtions
+    # don't use 'save_draft', and this makes this test compatible with them.
+    #When I press "Publish"
+    When I press "edit-submit"
     Then the "h1" element should contain "Testing title"
 
   @api
diff --git a/tests/behat/features/spotlight_widget.feature b/tests/behat/features/spotlight_widget.feature
index 1927a44..a6c6668 100644
--- a/tests/behat/features/spotlight_widget.feature
+++ b/tests/behat/features/spotlight_widget.feature
@@ -9,7 +9,7 @@ Feature: Add spotlight widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add spotlight"
+      And I click "Add spotlight" in the "CTools modal" region
     Then I should see "Configure new Add spotlight"
 
   @api @javascript
diff --git a/tests/behat/features/table_widget.feature b/tests/behat/features/table_widget.feature
index 136f62c..fffedd4 100644
--- a/tests/behat/features/table_widget.feature
+++ b/tests/behat/features/table_widget.feature
@@ -9,7 +9,7 @@ Feature: Add table widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add table"
+      And I click "Add table" in the "CTools modal" region
     Then I should see "Configure new Add table"
 
   @api @javascript
diff --git a/tests/behat/features/text_widget.feature b/tests/behat/features/text_widget.feature
index eb27cd7..da91453 100644
--- a/tests/behat/features/text_widget.feature
+++ b/tests/behat/features/text_widget.feature
@@ -10,7 +10,7 @@ Feature: Add text widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane"
-      And I click "Add text"
+      And I click "Add text" in the "CTools modal" region
     Then I should see "Configure new Add text"
     When I fill in the following:
       | Title   | Text widget title       |
diff --git a/tests/behat/features/video_widget.feature b/tests/behat/features/video_widget.feature
index 0a9db05..41a243d 100644
--- a/tests/behat/features/video_widget.feature
+++ b/tests/behat/features/video_widget.feature
@@ -9,7 +9,7 @@ Feature: Add video widget
       And I am viewing a landing page
     When I customize this page with the Panels IPE
       And I click "Add new pane" in the "Boxton Content" region
-      And I click "Add video"
+      And I click "Add video" in the "CTools modal" region
     Then I should see "Configure new Add video"
 
   # TODO: About 10% of the time this test will hang with Firefox, so for now,
diff --git a/tests/behat/features/wysiwyg.feature b/tests/behat/features/wysiwyg.feature
index 77d159a..ec272e0 100644
--- a/tests/behat/features/wysiwyg.feature
+++ b/tests/behat/features/wysiwyg.feature
@@ -20,8 +20,11 @@ Feature: Use rich text editor
   Scenario Outline: Format text in the editor (first toolbar)
     When I click the "<Action>" button in the "edit-body-und-0-value" WYSIWYG editor
       And I type "Testing body" in the "edit-body-und-0-value" WYSIWYG editor
-      And I press "Publish"
-    Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Bryant Content" region
+      # Normally, here we'd press "Publish", however some child distribtions
+      # don't use 'save_draft', and this makes this test compatible with them.
+      #And I press "Publish"
+      And I press "edit-submit"
+    Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Panopoly Page Content" region
 
     Examples:
       | Action                        | Element    | Property        | Value        |
@@ -40,8 +43,9 @@ Feature: Use rich text editor
     When I expand the toolbar in the "edit-body-und-0-value" WYSIWYG editor
       And I click the "<Action>" button in the "edit-body-und-0-value" WYSIWYG editor
       And I type "Testing body" in the "edit-body-und-0-value" WYSIWYG editor
-      And I press "Publish"
-    Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Bryant Content" region
+      #And I press "Publish"
+      And I press "edit-submit"
+    Then I should see "Testing body" in the "<Element>" element with the "<Property>" CSS property set to "<Value>" in the "Panopoly Page Content" region
 
     Examples:
       | Action          | Element | Property        | Value     |
@@ -85,10 +89,11 @@ Feature: Use rich text editor
       And I click the fake "Submit" button
       And I switch out of all frames
     # Save the whole node.
-    When I press "Publish"
+    #When I press "Publish"
+    When I press "edit-submit"
     # See the image on the view page.
-    Then I should see the "img" element in the "Bryant Content" region
-      And I should see the image alt "Sample alt text" in the "Bryant Content" region
+    Then I should see the "img" element in the "Panopoly Page Content" region
+      And I should see the image alt "Sample alt text" in the "Panopoly Page Content" region
 
   # TODO: About 10% of the time this test will hang with Firefox, so for now,
   # we will run in Chrome only on Travis-CI to get consistent builds.
@@ -108,9 +113,10 @@ Feature: Use rich text editor
       And I click the fake "Submit" button
       And I switch out of all frames
     # Save the whole node.
-    When I press "Publish"
+    #When I press "Publish"
+    When I press "edit-submit"
     # See the image on the view page.
-    Then I should see the "iframe.media-youtube-player" element in the "Bryant Content" region
+    Then I should see the "iframe.media-youtube-player" element in the "Panopoly Page Content" region
 
   # TODO: About 10% of the time this test will hang with Firefox, so for now,
   # we will run in Chrome only on Travis-CI to get consistent builds.
@@ -130,6 +136,7 @@ Feature: Use rich text editor
       And I click the fake "Submit" button
       And I switch out of all frames
     # Save the whole node.
-    When I press "Publish"
+    #When I press "Publish"
+    When I press "edit-submit"
     # See the image on the view page.
-    Then I should see the "iframe.media-vimeo-player" element in the "Bryant Content" region
+    Then I should see the "iframe.media-vimeo-player" element in the "Panopoly Page Content" region
