diff --git a/features/profile/ssh_keys.feature b/features/profile/ssh_keys.feature
deleted file mode 100644
index b0d5b7489165554d7c8666c2f0e8a29248acbe9a..0000000000000000000000000000000000000000
--- a/features/profile/ssh_keys.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@profile
-Feature: Profile SSH Keys
-  Background:
-    Given I sign in as a user
-    And I have ssh key "ssh-rsa Work"
-    And I visit profile keys page
-
-  Scenario: I should see ssh keys
-    Then I should see my ssh keys
-
-  Scenario: Add new ssh key
-    Given I should see new ssh key form
-    And I submit new ssh key "Laptop"
-    Then I should see new ssh key "Laptop"
-
-  Scenario: Remove ssh key
-    Given I click link "Work"
-    And I click link "Remove"
-    Then I visit profile keys page
-    And I should not see "Work" ssh key
diff --git a/features/steps/profile/ssh_keys.rb b/features/steps/profile/ssh_keys.rb
deleted file mode 100644
index a400488a5326bc4ad0bca77f2e7dff31254f8bd0..0000000000000000000000000000000000000000
--- a/features/steps/profile/ssh_keys.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-class Spinach::Features::ProfileSshKeys < Spinach::FeatureSteps
-  include SharedAuthentication
-
-  step 'I should see my ssh keys' do
-    @user.keys.each do |key|
-      expect(page).to have_content(key.title)
-    end
-  end
-
-  step 'I should see new ssh key form' do
-    expect(page).to have_content("Add an SSH key")
-  end
-
-  step 'I submit new ssh key "Laptop"' do
-    fill_in "key_title", with: "Laptop"
-    fill_in "key_key", with: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzrEJUIR6Y03TCE9rIJ+GqTBvgb8t1jI9h5UBzCLuK4VawOmkLornPqLDrGbm6tcwM/wBrrLvVOqi2HwmkKEIecVO0a64A4rIYScVsXIniHRS6w5twyn1MD3sIbN+socBDcaldECQa2u1dI3tnNVcs8wi77fiRe7RSxePsJceGoheRQgC8AZ510UdIlO+9rjIHUdVN7LLyz512auAfYsgx1OfablkQ/XJcdEwDNgi9imI6nAXhmoKUm1IPLT2yKajTIC64AjLOnE0YyCh6+7RFMpiMyu1qiOCpdjYwTgBRiciNRZCH8xIedyCoAmiUgkUT40XYHwLuwiPJICpkAzp7Q== user@laptop"
-    click_button "Add key"
-  end
-
-  step 'I should see new ssh key "Laptop"' do
-    key = Key.find_by(title: "Laptop")
-    expect(page).to have_content(key.title)
-    expect(page).to have_content(key.key)
-    expect(current_path).to eq profile_key_path(key)
-  end
-
-  step 'I click link "Work"' do
-    click_link "Work"
-  end
-
-  step 'I click link "Remove"' do
-    click_link "Remove"
-  end
-
-  step 'I visit profile keys page' do
-    visit profile_keys_path
-  end
-
-  step 'I should not see "Work" ssh key' do
-    expect(page).not_to have_content "Work"
-  end
-
-  step 'I have ssh key "ssh-rsa Work"' do
-    create(:key, user: @user, title: "ssh-rsa Work", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+L3TbFegm3k8QjejSwemk4HhlRh+DuN679Pc5ckqE/MPhVtE/+kZQDYCTB284GiT2aIoGzmZ8ee9TkaoejAsBwlA+Wz2Q3vhz65X6sMgalRwpdJx8kSEUYV8ZPV3MZvPo8KdNg993o4jL6G36GDW4BPIyO6FPZhfsawdf6liVD0Xo5kibIK7B9VoE178cdLQtLpS2YolRwf5yy6XR6hbbBGQR+6xrGOdP16eGZDb1CE2bMvvJijjloFqPscGktWOqW+nfh5txwFfBzlfARDTBsS8WZtg3Yoj1kn33kPsWRlgHfNutFRAIynDuDdQzQq8tTtVwm+Yi75RfcPHW8y3P Work")
-  end
-end
diff --git a/spec/features/profiles/keys_spec.rb b/spec/features/profiles/keys_spec.rb
index 3b20d38c520cd603205096fcdd9f8a2ce9a8984b..eb1050d21c6665e5c2c203ac210dd56b9514be71 100644
--- a/spec/features/profiles/keys_spec.rb
+++ b/spec/features/profiles/keys_spec.rb
@@ -1,18 +1,57 @@
 require 'rails_helper'
 
-describe 'Profile > SSH Keys', feature: true do
+feature 'Profile > SSH Keys', feature: true do
   let(:user) { create(:user) }
 
   before do
     login_as(user)
-    visit profile_keys_path
   end
 
-  describe 'User adds an SSH key' do
-    it 'auto-populates the title', js: true do
+  describe 'User adds a key' do
+    before do
+      visit profile_keys_path
+    end
+
+    scenario 'auto-populates the title', js: true do
       fill_in('Key', with: attributes_for(:key).fetch(:key))
 
       expect(find_field('Title').value).to eq 'dummy@gitlab.com'
     end
+
+    scenario 'saves the new key' do
+      attrs = attributes_for(:key)
+
+      fill_in('Key', with: attrs[:key])
+      fill_in('Title', with: attrs[:title])
+      click_button('Add key')
+
+      expect(page).to have_content("Title: #{attrs[:title]}")
+      expect(page).to have_content(attrs[:key])
+    end
+  end
+
+  scenario 'User sees their keys' do
+    key = create(:key, user: user)
+    visit profile_keys_path
+
+    expect(page).to have_content(key.title)
+  end
+
+  scenario 'User removes a key via the key index' do
+    create(:key, user: user)
+    visit profile_keys_path
+
+    click_link('Remove')
+
+    expect(page).to have_content('Your SSH keys (0)')
+  end
+
+  scenario 'User removes a key via its details page' do
+    key = create(:key, user: user)
+    visit profile_key_path(key)
+
+    click_link('Remove')
+
+    expect(page).to have_content('Your SSH keys (0)')
   end
 end