diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index 30fb4c5552ddc6539d2578ac52c5ac5a1ffef3e9..987694260c6cc88d5f4a272e2a7f7fb85b9c1900 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -9,7 +9,7 @@ class SnippetsController < ApplicationController
 
   before_filter :set_title
 
-  skip_before_filter :authenticate_user!, only: [:index, :user_index]
+  skip_before_filter :authenticate_user!, only: [:index, :user_index, :show]
 
   respond_to :html
 
diff --git a/features/snippets/public_snippets.feature b/features/snippets/public_snippets.feature
new file mode 100644
index 0000000000000000000000000000000000000000..6964badc413bdd804131f70ce1c76404ae46af56
--- /dev/null
+++ b/features/snippets/public_snippets.feature
@@ -0,0 +1,5 @@
+Feature: Public snippets
+  Scenario: Unauthenticated user should see public snippets
+    Given There is public "Personal snippet one" snippet
+    And I visit snippet page "Personal snippet one"
+    Then I should see snippet "Personal snippet one"
diff --git a/features/snippets/snippets.feature b/features/snippets/snippets.feature
index 4c4e3ee2cffe2f2312fc8f4b35de467d0b4db8ec..6e8019c326fdbebd07598f4f360e9f124499dbb2 100644
--- a/features/snippets/snippets.feature
+++ b/features/snippets/snippets.feature
@@ -25,4 +25,4 @@ Feature: Snippets
   Scenario: I destroy "Personal snippet one"
     Given I visit snippet page "Personal snippet one"
     And I click link "Destroy"
-    Then I should not see "Personal snippet one" in snippets
+    Then I should not see "Personal snippet one" in snippets
\ No newline at end of file
diff --git a/features/steps/shared/snippet.rb b/features/steps/shared/snippet.rb
index 432f32defced90325bff408e47c6ccd74bc67317..bb596c1620a2ae32a97d7aceaa5d255f3051878e 100644
--- a/features/steps/shared/snippet.rb
+++ b/features/steps/shared/snippet.rb
@@ -51,4 +51,13 @@ module SharedSnippet
            visibility_level: Snippet::PUBLIC,
            author: current_user)
   end
+
+  step 'There is public "Personal snippet one" snippet' do
+    create(:personal_snippet,
+           title: "Personal snippet one",
+           content: "Test content",
+           file_name: "snippet.rb",
+           visibility_level: Snippet::PUBLIC,
+           author: create(:user))
+  end
 end
diff --git a/features/steps/snippets/public_snippets.rb b/features/steps/snippets/public_snippets.rb
new file mode 100644
index 0000000000000000000000000000000000000000..956aa4a3e7e468ce8d5acd36e0fb719e107f91f3
--- /dev/null
+++ b/features/steps/snippets/public_snippets.rb
@@ -0,0 +1,17 @@
+class Spinach::Features::PublicSnippets < Spinach::FeatureSteps
+  include SharedAuthentication
+  include SharedPaths
+  include SharedSnippet
+
+  step 'I should see snippet "Personal snippet one"' do
+    page.should have_no_xpath("//i[@class='public-snippet']")
+  end
+
+  step 'I visit snippet page "Personal snippet one"' do
+    visit snippet_path(snippet)
+  end
+
+  def snippet
+    @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
+  end
+end