def METHOD_NAME(env, extra_data):  # type: (tiny_test_fw.Env.Env, None) -> None # pylint: disable=unused-argument
    # Acquire DUT
    dut1 = env.get_dut('https_server', 'examples/protocols/https_server/wss_server', dut_class=ttfw_idf.ESP32DUT)
    # Get binary file
    binary_file = os.path.join(dut1.app.binary_path, 'wss_server.bin')
    bin_size = os.path.getsize(binary_file)
    ttfw_idf.log_performance('https_wss_server_bin_size', '{}KB'.format(bin_size // 1024))
    # Upload binary and start testing
    Utility.console_log('Starting wss_server test app')
    dut1.start_app()
    # Parse IP address of STA
    got_port = dut1.expect(re.compile(r'Server listening on port (\d+)'), timeout=60)[0]
    Utility.console_log('Waiting to connect with AP')
    got_ip = dut1.expect(re.compile(r'IPv4 address: (\d+\.\d+\.\d+\.\d+)'), timeout=60)[0]
    Utility.console_log('Got IP   : ' + got_ip)
    Utility.console_log('Got Port : ' + got_port)
    ca_file = os.path.join(os.path.dirname(__file__), 'main', 'certs', 'cacert.pem')
    # Start ws server test
    with WsClient(got_ip, int(got_port), ca_file) as ws:
        # Check for echo
        DATA = 'Espressif'
        dut1.expect('performing session handshake')
        client_fd = dut1.expect(re.compile(r'New client connected (\d+)'), timeout=20)[0]
        ws.write(data=DATA, opcode=OPCODE_TEXT)
        dut1.expect(re.compile(r'Received packet with message: {}'.format(DATA)))
        opcode, data = ws.read()
        data = data.decode('UTF-8')
        if data != DATA:
            raise RuntimeError('Failed to receive the correct echo response')
        Utility.console_log('Correct echo response obtained from the wss server')
        # Test for keepalive
        Utility.console_log('Testing for keep alive (approx time = 20s)')
        start_time = time.time()
        while True:
            try:
                opcode, data = ws.read()
                if opcode == OPCODE_PING:
                    ws.write(data='Espressif', opcode=OPCODE_PONG)
                    Utility.console_log('Received PING, replying PONG (to update the keepalive)')
                # Keep sending pong to update the keepalive in the server
                if (time.time() - start_time) > 20:
                    break
            except Exception:
                Utility.console_log('Failed the test for keep alive,\nthe client got abruptly disconnected')
                raise
        # keepalive timeout is 10 seconds so do not respond for (10 + 1) senconds
        Utility.console_log('Testing if client is disconnected if it does not respond for 10s i.e. keep_alive timeout (approx time = 11s)')
        try:
            dut1.expect('Client not alive, closing fd {}'.format(client_fd), timeout=20)
            dut1.expect('Client disconnected {}'.format(client_fd))
        except Exception:
            Utility.console_log('ENV_ERROR:Failed the test for keep alive,\nthe connection was not closed after timeout')
        time.sleep(11)
        Utility.console_log('Passed the test for keep alive')
    # Test keep alive and async response for multiple simultaneous client connections
    Utility.console_log('Testing for multiple simultaneous client connections (approx time = 30s)')
    test_multiple_client_keep_alive_and_async_response(got_ip, int(got_port), ca_file)
    Utility.console_log('Passed the test for multiple simultaneous client connections')