diff -Naur a/features/bootstrap/FeatureContext.php b/features/bootstrap/FeatureContext.php
--- a/features/bootstrap/FeatureContext.php	Tue Jul 24 16:23:39 2012
+++ b/features/bootstrap/FeatureContext.php	Tue Jul 24 16:52:29 2012
@@ -54,6 +54,7 @@
     if (isset($parameters['drush_alias'])) {
       $this->drushAlias = $parameters['drush_alias'];
     }
+    $this->useContext('subcontext_alias', new SubContext($parameters));
   }
 
   /**
@@ -599,4 +600,24 @@
   public function iExecuteTheCommands() {
     throw new PendingException();
   }
-}
+  /**
+  * @Given /^(?:|that )I am on the homepage$/
+  */
+  public function iAmOnTheHomepage() {
+    $this->getSession()->visit($this->locatePath('/'));
+  }
+  
+  /**
+   * @Given /^I should see the following <texts>$/
+   */
+  public function iShouldSeeTheFollowingTexts(TableNode $table) {
+    $page = $this->getSession()->getPage();
+    $table = $table->getHash();
+    foreach ($table as $key => $value) {
+      $text = $table[$key]['texts'];
+      if($page->hasContent($text) === FALSE) {
+        throw new Exception("The text '" . $text . "' was not found");
+      }
+    }
+  }
+}
\ No newline at end of file
diff -Naur a/features/bootstrap/SubContext.php b/features/bootstrap/SubContext.php
--- a/features/bootstrap/SubContext.php	Thu Jan  1 05:30:00 1970
+++ b/features/bootstrap/SubContext.php	Tue Jul 24 16:37:32 2012
@@ -0,0 +1,67 @@
+<?php
+#features/bootstrap/SubContext.php
+/*
+ * Class to define functions that are not commonly used by all features.
+ * @todo Should find a way to define a SubContext based on feature we write
+ * i.e 1 SubContext class for each feature
+ */
+
+use Behat\Behat\Context\BehatContext;
+use Behat\Behat\Context\Step\Given;
+use Behat\Behat\Context\Step\When;
+
+class SubContext extends BehatContext
+{
+  /* 
+  * Store the main context object
+  */
+  private $mainContext = "";
+  
+  public function __construct(array $parameters)
+  {
+    // do subcontext initialization
+  }
+  
+  /**
+   * @Given /^I should download the "([^"]*)" file "([^"]*)"$/
+   */
+  public function iShouldDownloadTheFile($type, $filename) {
+    $href = "";
+    $mainContext = $this->getMainContext();
+    $page = $mainContext->getSession()->getPage();
+    // findLink did not work if zip file was given, so using findAll
+    $result = $page->findAll('css', '.views-field a');
+    if (!empty($result)) {
+      foreach ($result as $res) {
+        if ($res->getText() == $filename) {
+          $href = $res->getAttribute("href");
+          break;
+        }
+      }
+      if ($href) {
+        $mainContext->getSession()->visit($href);
+        $responseHeaders = $mainContext->getSession()->getResponseHeaders();
+        if ((int) $responseHeaders['Content-Length'][0] > 10000) {
+          if ($type == "tar" && $responseHeaders['Content-Type'] == "application/x-gzip") {
+            // success
+          }
+          elseif ($type == "zip" && $responseHeaders['Content-Type'] == "application/zip") {
+            // success
+          }
+          else {
+            throw new Exception("The file '" . $filename. "' was not downloaded");
+          }
+        }
+        else {
+          throw new Exception("The file '" . $filename. "' was not downloaded");
+        }
+      }
+      else {
+        throw new Exception("The link '" . $filename. "' was not found on the page");
+      }
+    }
+    else {
+      throw new Exception("The link '" . $filename. "' was not found on the page");
+    }
+  }
+}
\ No newline at end of file
diff -Naur a/features/drupalorg/project_release_files.feature b/features/drupalorg/project_release_files.feature
--- a/features/drupalorg/project_release_files.feature	Thu Jan  1 05:30:00 1970
+++ b/features/drupalorg/project_release_files.feature	Mon Jul 23 18:44:45 2012
@@ -0,0 +1,39 @@
+Feature: Project release files
+  In order install a specific release of Drupal core
+  As any user
+  I should be able to download the release file
+
+  Scenario:
+    Given that I am on the homepage
+    When I follow "Download & Extend"
+    And I follow "Other Releases"
+    Then I should see the heading "Releases for Drupal core"
+
+  Scenario: Navigate to releases page
+    Given I am on "/node/3060/release"
+    And I select "6.x" from "API version"
+    And I press "Apply"
+    Then I should see the following <texts>
+    | texts |
+    | Drupal 6. |
+    | Download |
+    | Size |
+    | md5 hash |
+    And I should see the link "drupal-6.25.tar.gz"
+    And I should see the link "drupal-6.25.zip"
+
+  Scenario: Download tar file
+    Given I am on "/node/3060/release"
+    When I select "7.x" from "API version"
+    And I press "Apply"
+    Then I should see "Drupal 7.7"
+    And I should not see "Drupal 6."
+    And I should download the "tar" file "drupal-7.7.tar.gz"
+
+  Scenario: Download zip file
+    Given I am on "/node/3060/release"
+    When I select "8.x" from "API version"
+    And I press "Apply"
+    Then I should see "Drupal 8."
+    And I should not see "Drupal 7."
+    And I should download the "zip" file "drupal-8.x-dev.zip"
\ No newline at end of file
