diff --git a/core/modules/node/node.install b/core/modules/node/node.install
index b2616ab..d208156 100644
--- a/core/modules/node/node.install
+++ b/core/modules/node/node.install
@@ -446,6 +446,14 @@ function node_install() {
 }
 
 /**
+ * Implements hook_testing_install().
+ */
+function node_testing_install() {
+  user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content'));
+  user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content'));
+}
+
+/**
  * Implements hook_uninstall().
  */
 function node_uninstall() {
diff --git a/core/modules/simpletest/drupal_web_test_case.php b/core/modules/simpletest/drupal_web_test_case.php
index 5d868a2..a822fa8 100644
--- a/core/modules/simpletest/drupal_web_test_case.php
+++ b/core/modules/simpletest/drupal_web_test_case.php
@@ -1026,6 +1026,49 @@ class DrupalWebTestCase extends DrupalTestCase {
   }
 
   /**
+   * Creates default testing configuration for the specified modules, if available.
+   *
+   * @param array $modules
+   *   A list of module names, for which corresponding default testing
+   *   configuration is installed from the ./config_test sub-directory and
+   *   additional configuration may be performed via hook_testing_install().
+   *   Note that configuration may depend on other and dependencies are not
+   *   automatically resolved; pass dependent module names first; e.g.,
+   *   array('node', 'rdf').
+   *
+   * @todo Add support for default configuration "versions". Later.
+   */
+  protected function drupalCreateConfig(array $modules) {
+    $configured_modules = array();
+    foreach ($modules as $module) {
+      // @todo Import testing configuration from ./config_test, if any.
+      //   Though, speaking of dependencies in phpDoc above, default config of
+      //   one module may depend on default config of another module and thus
+      //   would need conditional logic; perhaps this doesn't make sense after all.
+
+      // Perform additional testing configuration actions via
+      // hook_testing_install(), if defined.
+      // @todo Consider usage of module_implements() for sorted implementations
+      //   here; but still requires to load .install files first (which may be
+      //   loaded during setUp(), but not necessarily after).
+      module_load_install($module);
+      $function = $module . '_testing_install';
+      if (function_exists($function)) {
+        $function();
+        $configured_modules[] = $module;
+      }
+    }
+
+    if (!empty($configured_modules)) {
+      // Ensure that all configuration changes are taken over in the parent site
+      // and child site.
+      $this->resetAll();
+
+      $this->pass(t('Created test configuration for %modules.', array('%modules' => implode(', ', $configured_modules))));
+    }
+  }
+
+  /**
    * Get a list files that can be used in tests.
    *
    * @param $type
@@ -1406,6 +1449,9 @@ class DrupalWebTestCase extends DrupalTestCase {
     if (isset($modules[0]) && is_array($modules[0])) {
       $modules = $modules[0];
     }
+    // Installation profile module dependencies are installed already, but might
+    // have been additionally specified in $modules; exclude them.
+    $modules = array_diff($modules, $profile_details['dependencies']);
     if ($modules) {
       $success = module_enable($modules, TRUE);
       $this->assertTrue($success, t('Enabled modules: %modules', array('%modules' => implode(', ', $modules))));
@@ -1443,6 +1489,15 @@ class DrupalWebTestCase extends DrupalTestCase {
     // Use the test mail class instead of the default mail handler class.
     variable_set('mail_system', array('default-system' => 'Drupal\Core\Mail\VariableLog'));
 
+    // Setup default testing configuration for all additional modules that have
+    // been installed. Installation profile modules are expected to be
+    // configured by the installation profile already.
+    if ($modules) {
+      // @todo Must provide a way to specify modules to exclude (which will be
+      //   manually configured in the test).
+      $this->drupalCreateConfig($modules);
+    }
+
     drupal_set_time_limit($this->timeLimit);
     $this->setup = TRUE;
   }
