diff --git a/Gemfile.lock b/Gemfile.lock index 58f269a9b..2975f6db1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -332,6 +332,7 @@ GEM activerecord (>= 4.0, < 5.3) parser (2.6.2.1) ast (~> 2.4.0) + percy-capybara (4.0.0) pg (0.21.0) platform-api (2.2.0) heroics (~> 0.0.25) @@ -577,6 +578,7 @@ DEPENDENCIES omniauth-flickr (>= 0.0.15) omniauth-twitter paranoia (~> 2.2) + percy-capybara (~> 4.0.0) pg (< 1.0.0) platform-api poltergeist diff --git a/app/views/members/_avatar.html.haml b/app/views/members/_avatar.html.haml index 421424256..8c00fe25a 100644 --- a/app/views/members/_avatar.html.haml +++ b/app/views/members/_avatar.html.haml @@ -1,5 +1,5 @@ - if member = link_to image_tag(avatar_uri(member, 150), - alt: '', + alt: 'avatar photo', class: 'img img-responsive avatar'), member_path(member) diff --git a/spec/factories/member.rb b/spec/factories/member.rb index 140ae1db9..b59712e39 100644 --- a/spec/factories/member.rb +++ b/spec/factories/member.rb @@ -7,7 +7,7 @@ FactoryBot.define do confirmed_at { Time.zone.now } show_email { false } bio { 'I love seeds' } - preferred_avatar_uri { 'me.jpg'} + preferred_avatar_uri { 'http://example.com/me.jpg' } # cropbot is needed for certain tests, eg. Crop.create_from_csv factory :cropbot do diff --git a/spec/features/percy/percy_spec.rb b/spec/features/percy/percy_spec.rb index 60f9311f5..1ef48dc55 100644 --- a/spec/features/percy/percy_spec.rb +++ b/spec/features/percy/percy_spec.rb @@ -1,17 +1,20 @@ require 'rails_helper' describe 'Test with visual testing', type: :feature, js: true do - let(:member) { FactoryBot.create :member, login_name: 'percy', - preferred_avatar_uri: 'http://www.gravatar.com/avatar/d021434aac03a7f7c7c0de60d07dad1c?size=150&default=identicon' } + let(:member) { FactoryBot.create :member, login_name: 'percy', preferred_avatar_uri: gravatar } + let(:someone_else) { FactoryBot.create :member, login_name: 'ruby', preferred_avatar_uri: gravatar2 } + + let(:gravatar) { 'http://www.gravatar.com/avatar/d021434aac03a7f7c7c0de60d07dad1c?size=150&default=identicon' } + let(:gravatar2) { 'http://www.gravatar.com/avatar/353d83d3677b142520987e1936fd093c?size=150&default=identicon' } let!(:tomato) { FactoryBot.create :tomato } before do { - chard: 'https://farm9.staticflickr.com/8516/8519911893_1759c28965_q.jpg', - apple: 'https://farm5.staticflickr.com/4748/38932178855_6fe9bcdb48_q.jpg', - pear: 'https://farm1.staticflickr.com/113/250984726_0fc31fea6d_q.jpg', - popcorn: 'https://farm8.staticflickr.com/7893/33150160528_24a689c6bc_q.jpg', + chard: 'https://farm9.staticflickr.com/8516/8519911893_1759c28965_q.jpg', + apple: 'https://farm5.staticflickr.com/4748/38932178855_6fe9bcdb48_q.jpg', + pear: 'https://farm1.staticflickr.com/113/250984726_0fc31fea6d_q.jpg', + popcorn: 'https://farm8.staticflickr.com/7893/33150160528_24a689c6bc_q.jpg', eggplant: 'https://farm8.staticflickr.com/7856/47068736892_1af9b8a4ba_q.jpg', - maize: 'https://farm66.staticflickr.com/65535/46739264475_7cb55b2cbb_q.jpg' + maize: 'https://farm66.staticflickr.com/65535/46739264475_7cb55b2cbb_q.jpg' }.each do |crop_type, photo_url| crop = FactoryBot.create crop_type owner = FactoryBot.create :member, login_name: crop_type.to_s.reverse, email: "#{crop.name}@example.com" @@ -36,21 +39,63 @@ describe 'Test with visual testing', type: :feature, js: true do it 'loads crops#index' do visit crops_path Percy.snapshot(page, name: "#{prefix}/crops#index") - end - end + end + end - describe 'plantings' do - it 'loads plantings#index' do - visit plantings_path + describe 'plantings' do + it 'loads plantings#index' do + visit plantings_path Percy.snapshot(page, name: "#{prefix}/plantings#index") - end + end - it 'load plantings#show' do - planting = FactoryBot.create :planting, crop: tomato, owner: member, garden: member.gardens.first - visit planting_path(planting) + it 'load another member plantings#show' do + planting = FactoryBot.create :planting, crop: tomato, owner: someone_else, garden: someone_else.gardens.first + visit planting_path(planting) Percy.snapshot(page, name: "#{prefix}/plantings#show") - end - end + end + + it 'load plantings#show' do + planting = FactoryBot.create :planting, crop: tomato, owner: member, garden: member.gardens.first + visit planting_path(planting) + Percy.snapshot(page, name: "#{prefix}/self/plantings#show") + end + end + + describe 'gardens' do + it 'loads gardens#index' do + visit gardens_path + Percy.snapshot(page, name: "#{prefix}/gardens#index") + end + + it 'load some one else\'s gardens#show' do + garden = FactoryBot.create :garden, name: 'paraside', owner: someone_else + visit garden_path(garden) + Percy.snapshot(page, name: "#{prefix}/gardens#show") + end + + it 'load my gardens#show' do + garden = FactoryBot.create :garden, name: 'paradise', owner: member + visit garden_path(garden) + Percy.snapshot(page, name: "#{prefix}/self/gardens#show") + end + end + + describe 'members' do + it 'loads members#index' do + visit members_path + Percy.snapshot(page, name: "#{prefix}/members#index") + end + + it 'load members#show' do + visit member_path(member) + Percy.snapshot(page, name: "#{prefix}/self/members#show") + end + + it 'loads another members#show' do + visit member_path(someone_else) + Percy.snapshot(page, name: "#{prefix}/members#show") + end + end end context "when signed out" do