Skip to content

Improve performance of snippet visibility rspec

What does this MR do?

This MR improves the spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb spec. In local, the time went from 1 min and 18 seconds to 28 seconds. Therefore, the improvement is 50 seconds.

Refs #228672 (closed)

Screenshots

Before

Top 10 slowest examples (4.66 seconds, 6.0% of total time):
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :public, feature_visibility: 20, user_type: :author, snippet_type: 10, outcome: true For public project and author users returns proper outcome
    0.87905 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:236
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 0, user_type: :external, snippet_type: 10, outcome: false For private project and external users returns proper outcome
    0.49724 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:236
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 10, user_type: :member, snippet_type: 20, outcome: true For private project and member users returns proper outcome
    0.46681 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:236
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :internal, feature_visibility: 10, user_type: :unauthenticated, snippet_type: 0, outcome: false Without a given project and unauthenticated users returns no snippets when the user cannot read cross project
    0.441 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:249
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 10, user_type: :author, snippet_type: 10, outcome: true For private project and author users returns proper outcome
    0.42373 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:236
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 0, user_type: :external, snippet_type: 10, outcome: false Without a given project and external users returns proper outcome
    0.39957 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:244
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 10, user_type: :member, snippet_type: 20, outcome: true Without a given project and member users returns no snippets when the user cannot read cross project
    0.39016 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:249
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :internal, feature_visibility: 20, user_type: :external, snippet_type: 10, outcome: false For internal project and external users returns proper outcome
    0.3888 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:236
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :private, feature_visibility: 10, user_type: :non_member, snippet_type: 20, outcome: false For private project and non_member users agrees with the read_snippet policy
    0.38677 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:232
  SnippetsFinder behaves like snippet visibility For project snippets project_type: :internal, feature_visibility: 20, user_type: :external, snippet_type: 10, outcome: false Without a given project and external users returns proper outcome
    0.38528 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:244

Finished in 1 minute 18.14 seconds (files took 5.16 seconds to load)

After

Top 10 slowest examples (2.45 seconds, 8.7% of total time):
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :public, feature_visibility: :disabled, user_type: :external, snippet_visibility: :public, outcome: false For  project and external users returns proper outcome
    0.72068 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :private, feature_visibility: :private, user_type: :external, snippet_visibility: :internal, outcome: true For  project and external users returns proper outcome
    0.2418 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :private, feature_visibility: :enabled, user_type: :external, snippet_visibility: :private, outcome: true For  project and external users returns proper outcome
    0.23766 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :public, feature_visibility: :private, user_type: :unauthenticated, snippet_visibility: :internal, outcome: false Without a given project and unauthenticated users returns proper outcome
    0.21766 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:259
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :private, feature_visibility: :private, user_type: :external, snippet_visibility: :private, outcome: true For  project and external users returns proper outcome
    0.2115 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :internal, feature_visibility: :private, user_type: :author, snippet_visibility: :internal, outcome: true For  project and author users returns proper outcome
    0.17094 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :private, feature_visibility: :private, user_type: :member, snippet_visibility: :public, outcome: true Without a given project and member users returns proper outcome
    0.16577 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:259
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :internal, feature_visibility: :enabled, user_type: :external, snippet_visibility: :internal, outcome: false Without a given project and external users returns proper outcome
    0.16278 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:259
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :public, feature_visibility: :disabled, user_type: :member, snippet_visibility: :private, outcome: false For  project and member users returns proper outcome
    0.1627 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:247
  SnippetsFinder behaves like snippet visibility For project snippets project_visibility: :internal, feature_visibility: :disabled, user_type: :author, snippet_visibility: :private, outcome: false Without a given project and author users returns proper outcome
    0.16255 seconds ./spec/support/shared_examples/finders/snippet_visibility_shared_examples.rb:259

Finished in 28.16 seconds (files took 3.94 seconds to load)

Does this MR meet the acceptance criteria?

Conformity

Merge request reports