The test suite is slow: ~9 minutes on CI, ~5 minutes locally
The problem
A full rspec run takes about 562s on a macOS runner and 276s on a 14 core laptop. That is long enough that contributors do not run it before pushing, and long enough to dominate CI feedback time.
Where the time goes
Measured with the JSON formatter, aggregating run_time per file: 269s of example time across 446 files, on macOS.
It is concentrated. Four files are 45% of the total:
34.9s fastlane_core/spec/project_spec.rb
32.6s scan/spec/detect_values_spec.rb
27.5s scan/spec/runner_spec.rb
27.1s deliver/spec/upload_metadata_spec.rbIt is subprocesses, not Ruby. 19 of 446 files carry requires_xcodebuild, and they account for 167s of 269s, 61%. Linux, where those specs skip, runs the same suite in about 130s against macOS's 562s.
It is not one pathological test. project_spec is 93 examples in 35.2s: two deliberate timeout tests with real sleeps account for 9.6s, and the rest is about eighty examples at roughly 1.2s each, every one a real xcodebuild -showBuildSettings.
The same questions are asked repeatedly. Those ~180 -showBuildSettings calls only ever ask about 7 fixture projects, about 22 distinct commands. FastlaneCore::Project#build_settings memoises the answer, but per instance, and every example constructs a fresh Project.
Scope
This issue is the problem and the measurements. Remedies belong in whatever PR proposes one. #30184, order dependence, was a prerequisite for the most obvious of them.
Source: fastlane/fastlane