Source code for tests.management.commands.run_tests_integration

import os
import sys

from django.core.exceptions import SuspiciousOperation
from django.core.management.base import BaseCommand

from cobalt.settings import COBALT_HOSTNAME
from tests.test_manager import CobaltTestManagerIntegration


[docs] class Command(BaseCommand):
[docs] def add_arguments(self, parser): # Positional arguments parser.add_argument("--app", help="App name e.g. payments.") parser.add_argument("--browser", help="Browser - default is chrome") parser.add_argument( "--base_url", help="Base url for server e.g. http://127.0.0.1:8088" ) parser.add_argument( "--headless", help="Specify any value to run browser in the background" ) parser.add_argument( "--single_test", help="Class name of a test to only run one test and not them all", )
[docs] def handle(self, *args, **options): if COBALT_HOSTNAME in ["myabf.com.au", "www.myabf.com.au"]: raise SuspiciousOperation( "Not for use in production. This cannot be used in a production system." ) app = options["app"] browser = options["browser"] base_url = options["base_url"] headless = options["headless"] single_test = options["single_test"] # create testManager to oversee things manager = CobaltTestManagerIntegration( app, browser, base_url, headless, single_test ) # run tests manager.run() # Create output with open("/tmp/test-output.html", "w", encoding="utf-8") as html_file: html_file.write(manager.report_html()) # notify user if manager.overall_success: print("All tests passed\n") print("Results are in /tmp/test-output.html\n") else: # We have errors, so show output os.system("open /tmp/test-output.html")