-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Description
The E2E test infrastructure currently uses puts
for all output. A proper logger would provide better control over log levels, formatting, and output destinations (especially useful in CI environments).
Proposed Changes
1. Add Logger Support
require 'logger'
module ShakacodeDemoCommon
class E2eTestRunner
attr_reader :results, :logger
def initialize(modes, logger: nil)
@modes = modes
@results = {}
@logger = logger || default_logger
end
private
def default_logger
Logger.new($stdout).tap do |log|
log.level = ENV.fetch('E2E_LOG_LEVEL', 'INFO')
log.formatter = proc do |severity, datetime, progname, msg|
"#{severity}: #{msg}\n"
end
end
end
end
end
2. Replace puts Calls
# Before
puts 'Starting server...'
puts "Warning: Port #{port} may still be in use"
# After
logger.info 'Starting server...'
logger.warn "Port #{port} may still be in use"
logger.debug "Server responding with status #{response.code}"
3. Benefits by Log Level
- DEBUG: Detailed server responses, port checks, HTTP timeouts
- INFO: Test progress, mode switches, success messages (default)
- WARN: Warnings about port availability, fallback behaviors
- ERROR: Test failures, server startup failures
Use Cases:
CI Environment
# Minimal output for clean CI logs
E2E_LOG_LEVEL=WARN bundle exec rake e2e:test_all_modes
Local Debugging
# Verbose output for troubleshooting
E2E_LOG_LEVEL=DEBUG bundle exec rake e2e:test_all_modes
Production Runs
# Standard informational output
E2E_LOG_LEVEL=INFO bundle exec rake e2e:test_all_modes # default
Implementation Considerations:
- Maintain backward compatibility (default logger should produce similar output)
- Allow custom logger injection for testing
- Don't log sensitive information (ports are fine, but avoid tokens/credentials)
- Consider colorized output for better readability (using gems like
rainbow
) - Progress indicators (
.
characters) might need special handling
Related
- Mentioned as future improvement in PR Refactor code quality improvements #24
- Complements environment configuration from Make E2E test timeouts configurable via environment variables #28
Priority
Low-Medium - Would improve developer experience and CI integration but current puts
approach is functional.
Metadata
Metadata
Assignees
Labels
No labels