# RuboCop configuration for Yattee UI tests
# Relaxed configuration matching existing code style

plugins:
  - rubocop-rspec

AllCops:
  TargetRubyVersion: 3.4
  NewCops: enable
  Include:
    - 'spec/**/*.rb'
  Exclude:
    - 'vendor/**/*'
    - 'Gemfile'

# ============================================
# Metrics - Relaxed for UI test complexity
# ============================================

# RSpec blocks are naturally long
Metrics/BlockLength:
  Enabled: false

# UI test methods can be longer
Metrics/MethodLength:
  Max: 120

# Classes can be larger in test support code
Metrics/ClassLength:
  Max: 500

# Allow higher complexity for UI test helpers
Metrics/AbcSize:
  Max: 100

Metrics/CyclomaticComplexity:
  Max: 40

Metrics/PerceivedComplexity:
  Max: 40

# ============================================
# Layout
# ============================================

# Relaxed line length for readability
Layout/LineLength:
  Max: 140

# ============================================
# Naming
# ============================================

# Allow methods like find_element, ensure_invidious without ? suffix
Naming/PredicateMethod:
  Enabled: false

# Allow set_ prefix for methods like set_status_bar_overrides
Naming/AccessorMethodName:
  Enabled: false

# ============================================
# Lint
# ============================================

# Allow duplicate branches in case statements (UI state machines)
Lint/DuplicateBranch:
  Enabled: false

# ============================================
# Style
# ============================================

# Not needed for test files
Style/Documentation:
  Enabled: false

# Allow multi-line block chains (common in RSpec)
Style/MultilineBlockChain:
  Enabled: false

# Allow single-line if statements (don't force modifier style)
Style/IfUnlessModifier:
  Enabled: false

# Allow short parameter names in UI test helpers
Naming/MethodParameterName:
  Enabled: false

# ============================================
# RSpec - Relaxed for UI testing patterns
# ============================================

# UI tests may need more steps
RSpec/ExampleLength:
  Max: 30

# Allow before(:all) for simulator lifecycle management
RSpec/BeforeAfterAll:
  Enabled: false

# Allow instance variables shared across examples (@axe, @udid)
RSpec/InstanceVariable:
  Enabled: false

# UI tests often batch multiple checks
RSpec/MultipleExpectations:
  Enabled: false

# Allow deeper nesting for describe/context blocks
RSpec/NestedGroups:
  Max: 5

# Feature/smoke specs use string descriptions, not class names
RSpec/DescribeClass:
  Enabled: false

# Allow expect in before hooks for setup verification
RSpec/ExpectInHook:
  Enabled: false
