Check slow feature tests
For each slow feature test appearing in https://gitlab-org.gitlab.io/rspec_profiling_stats/
- Does it use let_it_be(:project) ?
- Profile with
bin/rspec-stackprof --speedscope=true <spec>
- Check for un-necessary waits (https://github.com/ngauthier/capybara-slow_finder_errors#boolean-finder).
- See !98625 (merged) for an example
Why should we do this ?
A single waiting / blocking step that is un-necessary wastes 30 seconds by default. 679 of out top 1000 slow tests are feature tests. It seems like low hanging fruit
Top 50 slow feature specs
{"fields":[{"key":"spec","sortable":true},{"key":"duration","sortable":true},{"key":"query_count","sortable":true},{"key":"query_time","sortable":true},{"key":"request_count","sortable":true}],"items":[{"spec":"./ee/spec/features/admin/geo/admin_geo_projects_spec.rb:340","duration":"74.978809716","query_count":"631","query_time":"1.861847417999999","request_count":"12"},{"spec":"./spec/features/projects/tree/create_directory_spec.rb:28","duration":"74.420756535","query_count":"589","query_time":"2.987105827","request_count":"48"},{"spec":"./spec/features/projects/branches_spec.rb:162","duration":"74.206461281","query_count":"341","query_time":"0.7559273320000004","request_count":"8"},{"spec":"./spec/features/projects/blobs/user_creates_new_blob_in_new_project_spec.rb:16","duration":"73.927769013","query_count":"336","query_time":"1.1105490639999993","request_count":"20"},{"spec":"./spec/features/projects/tree/create_file_spec.rb:28","duration":"73.368346973","query_count":"582","query_time":"2.4804634900000004","request_count":"41"},{"spec":"./ee/spec/features/projects/integrations/prometheus_custom_metrics_spec.rb:23","duration":"72.375904421","query_count":"406","query_time":"0.0","request_count":"14"},{"spec":"./ee/spec/features/admin/geo/admin_geo_projects_spec.rb:88","duration":"71.610326971","query_count":"565","query_time":"1.6952132229999999","request_count":"9"},{"spec":"./ee/spec/features/admin/geo/admin_geo_projects_spec.rb:88","duration":"71.527425176","query_count":"564","query_time":"1.6642526290000004","request_count":"9"},{"spec":"./spec/features/projects/blobs/user_creates_new_blob_in_new_project_spec.rb:16","duration":"71.400816474","query_count":"294","query_time":"0.9500019499999999","request_count":"13"},{"spec":"./ee/spec/features/admin/geo/admin_geo_projects_spec.rb:88","duration":"71.102244152","query_count":"565","query_time":"1.579503887","request_count":"9"},{"spec":"./ee/spec/features/boards/swimlanes/epics_swimlanes_drag_drop_spec.rb:35","duration":"70.89611801","query_count":"495","query_time":"2.271219871","request_count":"46"},{"spec":"./spec/features/issues/incident_issue_spec.rb:89","duration":"70.280758929","query_count":"580","query_time":"2.792350506000002","request_count":"77"},{"spec":"./spec/features/incidents/user_views_incident_spec.rb:43","duration":"69.377383898","query_count":"571","query_time":"4.527080469000002","request_count":"74"},{"spec":"./spec/features/profiles/user_edit_profile_spec.rb:395","duration":"69.298864419","query_count":"534","query_time":"2.2100447480000023","request_count":"54"},{"spec":"./spec/features/admin/admin_settings_spec.rb:596","duration":"69.003156959","query_count":"2244","query_time":"4.284891176999994","request_count":"10"},{"spec":"./ee/spec/features/users/identity_verification_spec.rb:55","duration":"68.754278812","query_count":"94","query_time":"0.22999776600000008","request_count":"18"},{"spec":"./spec/features/issues/related_issues_spec.rb:293","duration":"68.269146202","query_count":"552","query_time":"1.7627023550000003","request_count":"53"},{"spec":"./ee/spec/features/geo_node_spec.rb:102","duration":"65.545804913","query_count":"146","query_time":"0.3417520350000001","request_count":"13"},{"spec":"./ee/spec/features/geo_node_spec.rb:114","duration":"65.305321081","query_count":"146","query_time":"0.35165684700000005","request_count":"13"},{"spec":"./spec/features/projects/ci/lint_spec.rb:33","duration":"65.242994081","query_count":"194","query_time":"0.3762514439999998","request_count":"2"},{"spec":"./spec/features/projects/branches/user_views_branches_spec.rb:21","duration":"65.234646613","query_count":"106","query_time":"0.24712311400000006","request_count":"4"},{"spec":"./spec/features/projects/ci/lint_spec.rb:33","duration":"64.720080113","query_count":"209","query_time":"0.39457507599999975","request_count":"2"},{"spec":"./spec/features/projects/show/user_sees_collaboration_links_spec.rb:97","duration":"64.681608174","query_count":"251","query_time":"0.7591211059999998","request_count":"9"},{"spec":"./spec/features/projects/show/user_sees_collaboration_links_spec.rb:97","duration":"64.418172615","query_count":"251","query_time":"0.7320053989999998","request_count":"9"},{"spec":"./spec/features/projects/blobs/edit_spec.rb:109","duration":"64.35255126","query_count":"186","query_time":"0.3210573819999999","request_count":"2"},{"spec":"./spec/features/projects/ci/lint_spec.rb:78","duration":"63.546865092","query_count":"173","query_time":"0.27424575600000006","request_count":"1"},{"spec":"./spec/features/projects/environments/environments_spec.rb:107","duration":"63.437181311","query_count":"196","query_time":"0.4174503770000001","request_count":"21"},{"spec":"./ee/spec/features/issues/user_sees_empty_state_spec.rb:10","duration":"62.079137119","query_count":"48","query_time":"0.07031561000000001","request_count":"1"},{"spec":"./spec/features/admin/admin_settings_spec.rb:896","duration":"58.597590478","query_count":"2220","query_time":"3.1743936109999966","request_count":"11"},{"spec":"./spec/features/merge_request/user_posts_diff_notes_spec.rb:163","duration":"34.704714644","query_count":"1327","query_time":"5.899204437000009","request_count":"83"},{"spec":"./spec/features/projects/environments/environment_metrics_spec.rb:28","duration":"34.622004663","query_count":"2352","query_time":"0.0","request_count":"122"},{"spec":"./spec/features/u2f_spec.rb:189","duration":"33.683317022","query_count":"555","query_time":"1.096869384","request_count":"32"},{"spec":"./spec/features/merge_request/batch_comments_spec.rb:109","duration":"33.261749237","query_count":"1619","query_time":"8.797588576999997","request_count":"117"},{"spec":"./spec/features/merge_request/batch_comments_spec.rb:119","duration":"32.899787876","query_count":"1751","query_time":"10.845910121000014","request_count":"122"},{"spec":"./spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb:186","duration":"32.873213132","query_count":"1014","query_time":"3.712254841000004","request_count":"55"},{"spec":"./spec/features/merge_request/user_sees_diff_spec.rb:91","duration":"32.78668214","query_count":"385","query_time":"1.9318880159999998","request_count":"23"},{"spec":"./spec/features/merge_request/user_sees_versions_spec.rb:28","duration":"30.656337145","query_count":"1686","query_time":"8.750911013999984","request_count":"99"},{"spec":"./spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb:157","duration":"30.436538551","query_count":"898","query_time":"3.281359851000001","request_count":"43"},{"spec":"./spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb:101","duration":"29.194748532","query_count":"621","query_time":"2.122925797","request_count":"36"},{"spec":"./spec/features/projects/environments/environment_metrics_spec.rb:28","duration":"28.76691948","query_count":"1884","query_time":"0.0","request_count":"94"},{"spec":"./ee/spec/features/issues/move_issue_resource_weight_events_spec.rb:36","duration":"28.742532834","query_count":"1697","query_time":"9.217377109999987","request_count":"82"},{"spec":"./ee/spec/features/merge_request/user_sets_approvers_spec.rb:194","duration":"28.667193816","query_count":"1549","query_time":"8.386712847000007","request_count":"81"},{"spec":"./spec/features/merge_request/user_posts_diff_notes_spec.rb:222","duration":"28.655227273","query_count":"1000","query_time":"3.5923926139999947","request_count":"68"},{"spec":"./spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb:138","duration":"27.43770485","query_count":"740","query_time":"2.5646541059999994","request_count":"38"},{"spec":"./spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb:51","duration":"27.325349652","query_count":"1221","query_time":"5.986876953000001","request_count":"64"},{"spec":"./spec/features/expand_collapse_diffs_spec.rb:265","duration":"26.916364104","query_count":"411","query_time":"1.5541719019999993","request_count":"21"},{"spec":"./spec/features/expand_collapse_diffs_spec.rb:294","duration":"26.907749413","query_count":"411","query_time":"1.7140160890000016","request_count":"21"},{"spec":"./spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb:124","duration":"26.833452178","query_count":"651","query_time":"2.364124703000001","request_count":"36"},{"spec":"./spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb:33","duration":"26.729645921","query_count":"1221","query_time":"6.128331857000004","request_count":"64"},{"spec":"./ee/spec/features/merge_trains/user_adds_merge_request_to_merge_train_spec.rb:71","duration":"26.566976861","query_count":"1838","query_time":"11.277565175999982","request_count":"92"}],"filter":true}
Edited by Alina Mihaila