From f99156fddcab45467a4da773387efa4ea13401c3 Mon Sep 17 00:00:00 2001 From: Jon Rohan Date: Wed, 28 Sep 2022 12:36:30 -0700 Subject: [PATCH] Don't use outside images in docs examples (#1416) * Don't use outside images * move things * Urls here is fine * Disable for now * Installing webmock to disable outside calls in tests * allow localhost --- .changeset/nasty-houses-sparkle.md | 5 +++++ Gemfile | 4 ++++ Gemfile.lock | 8 ++++++++ app/components/primer/beta/avatar.rb | 20 +++++++++---------- app/components/primer/beta/avatar_stack.rb | 18 ++++++++--------- app/components/primer/beta/blankslate.rb | 4 ++-- app/components/primer/image.rb | 8 ++++---- app/components/primer/image_crop.rb | 6 +++--- .../primer/timeline_item_component.rb | 2 +- lib/primer/example_image.rb | 7 +++++++ previews/primer/beta/avatar_preview.rb | 2 +- previews/primer/beta/avatar_stack_preview.rb | 14 ++++++------- previews/primer/beta/blankslate_preview.rb | 2 +- previews/primer/image_crop_preview.rb | 4 ++-- previews/primer/markdown_preview.rb | 4 ++-- .../primer/timeline_item_component_preview.rb | 2 +- test/test_helper.rb | 3 +++ 17 files changed, 70 insertions(+), 43 deletions(-) create mode 100644 .changeset/nasty-houses-sparkle.md create mode 100644 lib/primer/example_image.rb diff --git a/.changeset/nasty-houses-sparkle.md b/.changeset/nasty-houses-sparkle.md new file mode 100644 index 0000000000..00a6374216 --- /dev/null +++ b/.changeset/nasty-houses-sparkle.md @@ -0,0 +1,5 @@ +--- +"@primer/view-components": patch +--- + +Don't use outside images in docs examples diff --git a/Gemfile b/Gemfile index de70da065e..19c492882c 100644 --- a/Gemfile +++ b/Gemfile @@ -37,3 +37,7 @@ gem "bootsnap", ">= 1.4.2", require: false gem "lookbook", "~> 1" unless rails_version.to_f < 7 gem "view_component", path: ENV["VIEW_COMPONENT_PATH"] if ENV["VIEW_COMPONENT_PATH"] + +group :test do + gem "webmock" +end diff --git a/Gemfile.lock b/Gemfile.lock index cf2c188968..1276b12dd7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -77,6 +77,8 @@ GEM coercible (1.0.0) descendants_tracker (~> 0.0.1) concurrent-ruby (1.1.10) + crack (0.4.5) + rexml crass (1.0.6) css_parser (1.12.0) addressable @@ -102,6 +104,7 @@ GEM concurrent-ruby (~> 1.1) websocket-driver (>= 0.6, < 0.8) ffi (1.15.5) + hashdiff (1.0.1) htmlbeautifier (1.4.2) htmlentities (4.3.4) i18n (1.12.0) @@ -241,6 +244,10 @@ GEM watir (7.1.0) regexp_parser (>= 1.2, < 3) selenium-webdriver (~> 4.0) + webmock (3.18.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) webpacker (5.4.3) activesupport (>= 5.2) rack-proxy (>= 0.6.1) @@ -294,6 +301,7 @@ DEPENDENCIES sprockets-rails thor timecop + webmock webpacker (~> 5.0) yard (~> 0.9.25) diff --git a/app/components/primer/beta/avatar.rb b/app/components/primer/beta/avatar.rb index 06c497f291..9ceb0f108f 100644 --- a/app/components/primer/beta/avatar.rb +++ b/app/components/primer/beta/avatar.rb @@ -28,22 +28,22 @@ class Avatar < Primer::Component SIZE_OPTIONS = [16, DEFAULT_SIZE, SMALL_THRESHOLD, 32, 40, 48, 80].freeze # @example Default - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser")) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser")) %> # # @example Square - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", shape: :square)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", shape: :square)) %> # # @example Link - # <%= render(Primer::Beta::Avatar.new(href: "#", src: "http://placekitten.com/200/200", alt: "@kittenuser profile")) %> + # <%= render(Primer::Beta::Avatar.new(href: "#", src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser profile")) %> # # @example With size - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 16)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 20)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 24)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 32)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 40)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 48)) %> - # <%= render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: 80)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 16)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 20)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 24)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 32)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 40)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 48)) %> + # <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 80)) %> # # @param src [String] The source url of the avatar image. # @param alt [String] Passed through to alt on img tag. diff --git a/app/components/primer/beta/avatar_stack.rb b/app/components/primer/beta/avatar_stack.rb index 8760ea0e23..3cbf6bf90d 100644 --- a/app/components/primer/beta/avatar_stack.rb +++ b/app/components/primer/beta/avatar_stack.rb @@ -21,23 +21,23 @@ class AvatarStack < Primer::Component # @example Default # <%= render(Primer::Beta::AvatarStack.new) do |c| %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> # <% end %> # # @example Align right # <%= render(Primer::Beta::AvatarStack.new(align: :right)) do |c| %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> # <% end %> # # @example With tooltip # <%= render(Primer::Beta::AvatarStack.new(tooltipped: true, body_arguments: { label: 'This is a tooltip!' })) do |c| %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> - # <% c.with_avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> + # <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %> # <% end %> # # @param tag [Symbol] <%= one_of(Primer::Beta::AvatarStack::TAG_OPTIONS) %> diff --git a/app/components/primer/beta/blankslate.rb b/app/components/primer/beta/blankslate.rb index e51678609b..ea49be676f 100644 --- a/app/components/primer/beta/blankslate.rb +++ b/app/components/primer/beta/blankslate.rb @@ -83,7 +83,7 @@ class Blankslate < Primer::Component system_arguments[:size] = :medium system_arguments[:scheme] ||= :primary - Primer::ButtonComponent.new(**system_arguments) + Primer::ButtonComponent.new(**system_arguments) # rubocop:disable Primer/ComponentNameMigration } # Optional secondary action @@ -130,7 +130,7 @@ class Blankslate < Primer::Component # Add an `image` to give context that an Octicon couldn't. # @code # <%= render Primer::Beta::Blankslate.new do |c| %> - # <% c.visual_image(src: "https://github.githubassets.com/images/modules/site/features/security-icon.svg", alt: "Security - secure vault") %> + # <% c.visual_image(src: Primer::ExampleImage::BASE64_SRC, alt: "Security - secure vault") %> # <% c.heading(tag: :h2).with_content("Title") %> # <% c.description { "Description"} %> # <% end %> diff --git a/app/components/primer/image.rb b/app/components/primer/image.rb index 5da29a5e1c..0374b63b91 100644 --- a/app/components/primer/image.rb +++ b/app/components/primer/image.rb @@ -8,19 +8,19 @@ module Primer class Image < Primer::Component # @example Default # - # <%= render(Primer::Image.new(src: "https://github.com/github.png", alt: "GitHub")) %> + # <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub")) %> # # @example Helper # - # <%= primer_image(src: "https://github.com/github.png", alt: "GitHub") %> + # <%= primer_image(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub") %> # # @example Lazy loading # - # <%= render(Primer::Image.new(src: "https://github.com/github.png", alt: "GitHub", lazy: true)) %> + # <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub", lazy: true)) %> # # @example Custom size # - # <%= render(Primer::Image.new(src: "https://github.com/github.png", alt: "GitHub", height: 100, width: 100)) %> + # <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub", height: 100, width: 100)) %> # # @param src [String] The source url of the image. # @param alt [String] Specifies an alternate text for the image. diff --git a/app/components/primer/image_crop.rb b/app/components/primer/image_crop.rb index e5eb031fbc..7ccda43291 100644 --- a/app/components/primer/image_crop.rb +++ b/app/components/primer/image_crop.rb @@ -14,13 +14,13 @@ class ImageCrop < Primer::Component } # @example Simple cropper - # <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png")) %> + # <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC)) %> # # @example Square cropper - # <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png", rounded: false)) %> + # <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) %> # # @example Cropper with a custom loader - # <%= render(Primer::ImageCrop.new(src: "https://github.com/koddsson.png", rounded: false)) do |cropper| %> + # <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) do |cropper| %> # <% cropper.with_loading(style: "width: 120px").with_content("Loading...") %> # <% end %> # diff --git a/app/components/primer/timeline_item_component.rb b/app/components/primer/timeline_item_component.rb index 17c3db5e8b..1f6a36fa14 100644 --- a/app/components/primer/timeline_item_component.rb +++ b/app/components/primer/timeline_item_component.rb @@ -40,7 +40,7 @@ class TimelineItemComponent < Primer::Component # @example Default #
# <%= render(Primer::TimelineItemComponent.new) do |component| %> - # <% component.with_avatar(src: "https://github.com/github.png", alt: "github") %> + # <% component.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "github") %> # <% component.with_badge(bg: :success_emphasis, color: :on_emphasis, icon: :check) %> # <% component.with_body { "Success!" } %> # <% end %> diff --git a/lib/primer/example_image.rb b/lib/primer/example_image.rb new file mode 100644 index 0000000000..deacbb7ca9 --- /dev/null +++ b/lib/primer/example_image.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module Primer + class ExampleImage + BASE64_SRC = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4AAAAOACAMAAABc6u1lAAAC+lBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAFBgYMCwoXExA0KyVEODFWSD9oV0x6ZVmReGmYfm6ninmyk4G8m4jIpZHSrZjWsZvhuqPnvqfOqpW3l4SrjnyihnaKcmRwXVFMPzc7MSspIh5eTUSBa16bgXHBoIzwxq30yrHrwanctqDzybAgGhefg3N2YVX1zbX32cf54dP65dj76+L87+f76d743c331cH20Lr9+PX////98+3//v7++/r79PHt29jZtK/JlI28eW6yZ1y2bWHCgXTdvbjy5eTixcHOn5nCh3+5cmfTqKLmzcr27OusXFGvYVbq1dLv3tzir5nKinnZoY3SloTpuKENEhNBTEhkdG5ugHlOWlYfJCKEmpLD49egurAxQEMxOja518wUGRqatKt5jYW00cZaaGOVrqW/3tKow7kjLCyPp56a2fCb2e+c2vCZ1/Cb2fCc2u+c2vCe2eub2vCZ1+6Z2PCb2vCc2vCc2u+e2++c2vCb2e8jMDWuy8AXICOb2vCb2vCc2u+a2PCc2u+c3f6c2vCb2vCZ1++b2vCY1++b2u+b2O9Sc3+c2fBXeocvQ0mZ2fCc2vBdg5Bpk6KAs8V2pbVhiJab2fBpk6FObnt3qsAxRU2W0ueGu86TzuNxn6+Qyt5tmKdGY3CZ1usbJiuKwdWOxtpAWmU6UVlcgY4oOD6Z1++U0u6GxOp8uuZ+veeDwemLyeuOzOyJx+qRz+2W1e+S0O2Av+iMy+tciqt1sNljlrlReZaIxuqGxOmEwuiAv+iKyOqHxemFw+mDweg7Nu1hAAAA/nRSTlMAMGuRtc7m9f/Yy7qhh0ckAyBAXXyW+px3B0OqSxsSpdKtO98PNi1wsPBnF1D/xiqBY8BgDI3rWQn9VXMnJv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yohl2zit/8K93NKwJP8D95T////fJ3pNqYDrdFCiFzKY/3w/6IY13jE//////////////////////////////////////////////////////+XwuP3ibXV7ty8AmoAAEHZSURBVHgB7MEBAQAQAAAgAPB/LxMMqAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2LKpbY+nt7m2ueyXx+IiXJRFIAPTgLHYHkYReyOyESwDrap+1/W33uxUvLI/ZZw+62WanUFkS/lNJ6brYfH8q+pcc2y3fYaHYiC6fK/uOVesz+AyMOw5o3GFv9LE6JgKvx/5ntv0oHIjjJKI5//z0exiKnF0yzbCxREBj68zEKe0UWhiIgXCHvPc4g0TRdtnxcYoVDEEy+zXHl1iHQMogeXl3GnKBCx5hXGmzVE0gal1ZKX+whRIBte59EbQCRnGMVLXiWGKBCf11rG2x1EElT/vctrLQcQhRHwFlZ7AnGv9f7AW3gQhfGONyq/THE70TnGvNEjRFEokzez2gFuI5z9gberQxTEhHd5OiqIq3VnS97DgyiIPe9kekOIa3yKyrzTI0RB+Lyb1apDXGrYPPB+DkQhGEzCsmdAXMJ5ZzEJJYhC2DAhdgPniPXoM5NhQxTCIxOzquEUYfSWTIo7hSiAOUlpwUwEMybpC0QBbElpwSwYMyarDVEAPSZt1cU/iXWPSTOhP6FCJs8O8FeiXlkyeWtoTwRMxfs1fifmLZdp+ArtCY/p+Nwe4Gdi17SYjgdoT9hMi7XZQajIZFpCBc0JZTE9ZqTwxvXLTFEAzYkJUzXu4y1b2zxFnkDhMWUP3/BWDVufma4ZNCdmTJtbneItUi8h03aA5sSB6TO3eHu6ZWbgO7QmHGbiKUC21HTgOIYRNH7WXyz6jZ8YP6k7znyH1A16zMQztCaOzMayNUR61PB70H9+2ezbvYfV2DfDJU+zDv54Fc9G7b0XfWl8GHSQKOVZzEYLQmt7ZuXwjITNjX7UbPXi8oF3s8yxPdp/PU6cjibX56+eILQWMzvxGkkYGouXfW/lu0zHYWy3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" + end +end diff --git a/previews/primer/beta/avatar_preview.rb b/previews/primer/beta/avatar_preview.rb index 5eab2030dd..259e003cc1 100644 --- a/previews/primer/beta/avatar_preview.rb +++ b/previews/primer/beta/avatar_preview.rb @@ -10,7 +10,7 @@ class AvatarPreview < ViewComponent::Preview # @param shape [Symbol] select [circle, square] # @param href [String] text def default(size: 24, shape: :circle, href: nil) - render(Primer::Beta::Avatar.new(src: "http://placekitten.com/200/200", alt: "@kittenuser", size: size, shape: shape, href: href)) + render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: size, shape: shape, href: href)) end end end diff --git a/previews/primer/beta/avatar_stack_preview.rb b/previews/primer/beta/avatar_stack_preview.rb index a1a5e0587f..3be119a96f 100644 --- a/previews/primer/beta/avatar_stack_preview.rb +++ b/previews/primer/beta/avatar_stack_preview.rb @@ -14,7 +14,7 @@ class AvatarStackPreview < ViewComponent::Preview def default(number_of_avatars: 1, tag: :div, align: :left, tooltipped: false, tooltip_label: "This is a tooltip!") render(Primer::Beta::AvatarStack.new(tag: tag, align: align, tooltipped: tooltipped, body_arguments: { label: tooltip_label })) do |c| Array.new(number_of_avatars || 1) do - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") end end end @@ -24,18 +24,18 @@ def default(number_of_avatars: 1, tag: :div, align: :left, tooltipped: false, to # @label Align right def align_right render(Primer::Beta::AvatarStack.new(align: :right)) do |c| - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") end end # @label With tooltip def with_tooltip render(Primer::Beta::AvatarStack.new(tooltipped: true, body_arguments: { label: "This is a tooltip!" })) do |c| - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") - c.avatar(src: "http://placekitten.com/200/200", alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") + c.avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") end end # @!endgroup diff --git a/previews/primer/beta/blankslate_preview.rb b/previews/primer/beta/blankslate_preview.rb index d2ceb2d3b4..43e76d5696 100644 --- a/previews/primer/beta/blankslate_preview.rb +++ b/previews/primer/beta/blankslate_preview.rb @@ -32,7 +32,7 @@ def with_icon(narrow: false, spacious: false, border: false) def with_image(narrow: false, spacious: false, border: false) render Primer::Beta::Blankslate.new(narrow: narrow, spacious: spacious, border: border) do |c| c.heading(tag: :h2).with_content("Millions of teams trust GitHub to keep their work safe") - c.visual_image(src: "https://github.githubassets.com/images/modules/site/features/security-icon.svg", alt: "Security - secure vault") + c.visual_image(src: Primer::ExampleImage::BASE64_SRC, alt: "Security - secure vault") end end diff --git a/previews/primer/image_crop_preview.rb b/previews/primer/image_crop_preview.rb index 1cd1849b2c..d0dbf0c94e 100644 --- a/previews/primer/image_crop_preview.rb +++ b/previews/primer/image_crop_preview.rb @@ -7,14 +7,14 @@ class ImageCropPreview < ViewComponent::Preview # # @param rounded [Boolean] def default(rounded: false) - render(Primer::ImageCrop.new(src: "https://github.com/octocat.png", rounded: rounded)) + render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: rounded)) end # @label Custom loading slot # # @param rounded [Boolean] def loading(rounded: false) - render(Primer::ImageCrop.new(src: "https://github.com/octocat.png", rounded: rounded)) do |c| + render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: rounded)) do |c| c.with_loading { "Loading..." } end end diff --git a/previews/primer/markdown_preview.rb b/previews/primer/markdown_preview.rb index 2154abdff8..ddec5cd9a7 100644 --- a/previews/primer/markdown_preview.rb +++ b/previews/primer/markdown_preview.rb @@ -267,11 +267,11 @@ def default

Small images should be shown at their actual size.

-

+

Large images should always scale down and fit in the content container.

-

+
This is the final element on the page and there should be no margin below this.
".html_safe # rubocop:disable Rails/OutputSafety end diff --git a/previews/primer/timeline_item_component_preview.rb b/previews/primer/timeline_item_component_preview.rb index 943ae8dd09..cc9f3d648c 100644 --- a/previews/primer/timeline_item_component_preview.rb +++ b/previews/primer/timeline_item_component_preview.rb @@ -8,7 +8,7 @@ class TimelineItemComponentPreview < ViewComponent::Preview # @param condensed [Boolean] def default(condensed: false) render(Primer::TimelineItemComponent.new(condensed: condensed)) do |component| - component.with_avatar(src: "https://github.com/octocat.png", alt: "octocat") + component.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "octocat") component.with_badge(bg: :success_emphasis, color: :on_emphasis, icon: :check) component.with_body { "Success!" } end diff --git a/test/test_helper.rb b/test/test_helper.rb index a0bcbc6e7b..e740e35173 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -28,8 +28,11 @@ require "action_controller/railtie" require "rails/test_unit/railtie" require "active_model/railtie" +require "webmock/minitest" require "primer/view_components" require "primer/view_components/linters" require File.expand_path("../demo/config/environment.rb", __dir__) + +WebMock.disable_net_connect!(allow_localhost: true)