content: from dash.testing.browser import Browser
  
  
  class DashComposite(Browser):
      def __init__(self, server, **kwargs):
          super().__init__(**kwargs)
          self.server = server
  
      def start_server(self, app, navigate=True, **kwargs):
          """Start the local server with app."""
  
          # start server with app and pass Dash arguments
          self.server(app, **kwargs)
  
          if navigate:
              # set the default server_url, it implicitly call wait_for_page
              self.server_url = self.server.url
  
  
  class DashRComposite(Browser):
      def __init__(self, server, **kwargs):
          super().__init__(**kwargs)
          self.server = server
  
      def start_server(self, app, cwd=None):
  
          # start server with dashR app. The app sets its own run_server args
          # on the R side, but we support overriding the automatic cwd
          self.server(app, cwd=cwd)
  
          # set the default server_url, it implicitly call wait_for_page
          self.server_url = self.server.url
  
  
  class DashJuliaComposite(Browser):
      def __init__(self, server, **kwargs):
          super().__init__(**kwargs)
          self.server = server
  
      def start_server(self, app, cwd=None):
          # start server with Dash.jl app. The app sets its own run_server args
          # on the Julia side, but we support overriding the automatic cwd
          self.server(app, cwd=cwd)
  
          # set the default server_url, it implicitly call wait_for_page
          self.server_url = self.server.url
  