mirror of
https://github.com/yattee/yattee.git
synced 2026-02-19 17:29:45 +00:00
75 lines
1.9 KiB
Ruby
75 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rspec'
|
|
require 'fileutils'
|
|
require 'dotenv'
|
|
|
|
# Load environment variables from .env file (if present)
|
|
Dotenv.load
|
|
|
|
# Load support files
|
|
Dir[File.join(__dir__, 'support', '*.rb')].each { |f| require f }
|
|
|
|
# Load shared contexts
|
|
Dir[File.join(__dir__, 'support', 'shared_contexts', '*.rb')].each { |f| require f }
|
|
|
|
# Include custom matchers
|
|
RSpec.configure do |config|
|
|
config.include UITest::Matchers
|
|
|
|
# Use documentation format for better output
|
|
config.formatter = :documentation
|
|
|
|
# Run tests in random order to surface dependencies
|
|
config.order = :defined # Use defined order for UI tests (they may have dependencies)
|
|
|
|
# Show full backtrace on failure
|
|
config.full_backtrace = false
|
|
|
|
# Filter stack traces to remove gem noise
|
|
config.filter_gems_from_backtrace 'rspec-core', 'rspec-expectations', 'rspec-mocks', 'rspec-support'
|
|
|
|
# Retry configuration for flaky UI tests
|
|
config.around(:each, :retry) do |example|
|
|
example.run_with_retry(retry: 2, retry_wait: 1)
|
|
end
|
|
|
|
# Hooks for visual tests
|
|
config.before(:each, :visual) do
|
|
UITest::Config.ensure_directories!
|
|
end
|
|
|
|
# Global setup - ensure clean state
|
|
config.before(:suite) do
|
|
puts ''
|
|
puts '=' * 60
|
|
puts 'Yattee UI Tests'
|
|
puts '=' * 60
|
|
puts "Device: #{UITest::Config.device}"
|
|
puts "Generate baseline: #{UITest::Config.generate_baseline?}"
|
|
puts "Skip build: #{UITest::Config.skip_build?}"
|
|
puts "Keep app data: #{UITest::Config.keep_app_data?}"
|
|
puts '=' * 60
|
|
puts ''
|
|
end
|
|
|
|
# Global teardown
|
|
config.after(:suite) do
|
|
puts ''
|
|
puts '=' * 60
|
|
puts 'UI Tests Complete'
|
|
puts '=' * 60
|
|
end
|
|
end
|
|
|
|
# RSpec retry gem configuration (if available)
|
|
begin
|
|
require 'rspec/retry'
|
|
RSpec.configure do |config|
|
|
config.verbose_retry = true
|
|
config.display_try_failure_messages = true
|
|
end
|
|
rescue LoadError
|
|
# rspec-retry not installed, skip
|
|
end
|