Best Python code snippet using localstack_python
test_pymailq_shell.py
Source:test_pymailq_shell.py  
...35    for call in MOCK_STDOUT.write.call_args_list:36        res += call[0][0]37    MOCK_STDOUT.reset_mock()38    return res.strip()39def run_cmd(command):40    """Run command in shell41    :param str command: Shell command42    :return: Shell response as :func:`str`43    """44    PQSHELL.onecmd(command)45    return answer()46def test_shell_init():47    """Test shell.PyMailqShell object"""48    assert hasattr(PQSHELL, "cmdloop_nointerrupt")49    assert PQSHELL.prompt == "PyMailq (sel:0)> "50def test_shell_exit():51    """Test shell.PyMailqShell object"""52    PQSHELL.cmdqueue = ['exit']53    PQSHELL.cmdloop_nointerrupt()54    assert "Exiting shell... Bye." in answer()55def test_shell_empty_line():56    """Test empty line"""57    resp = run_cmd("")58    assert not len(resp)59def test_shell_completion():60    """Test shell completion"""61    resp = PQSHELL.completenames("sho")62    assert ["show "] == resp63    resp = PQSHELL.completedefault("invalid", "invalid")64    assert resp is None65    resp = PQSHELL.completedefault("re", "select re")66    assert ["recipient", "replay", "reset"] == sorted(resp)67    resp = PQSHELL.completedefault("sel", "show sel")68    assert ["selected"] == resp69    resp = PQSHELL.completedefault("", "show selected ")70    assert ["limit", "rankby", "sortby"] == sorted(resp)71    resp = PQSHELL.completedefault("",72                                   "show selected limit x rankby x sortby x")73    assert resp is None74    resp = PQSHELL.completedefault("", "show selected limit ")75    assert ["<n> "] == resp76    resp = PQSHELL.completedefault("", "show selected limit 5 ")77    assert ["rankby", "sortby"] == sorted(resp)78    resp = PQSHELL.completedefault("sen", "select sen")79    assert ["sender "] == resp80    resp = PQSHELL.completedefault("", "select sender ")81    assert ["<sender> [exact]"] == resp82def test_shell_help():83    """Test 'help' command"""84    resp = run_cmd("help")85    assert "Documented commands" in resp86def test_shell_help_help():87    """Test 'help help' command"""88    resp = run_cmd("help help")89    assert "Show available commands" in resp90def test_shell_help_exit():91    """Test 'help exit' command"""92    resp = run_cmd("help exit")93    assert "Exit PyMailq shell" in resp94def test_shell_help_show():95    """Test 'help show' command"""96    resp = run_cmd("help show")97    assert "Generic viewer utility" in resp98def test_shell_help_store():99    """Test 'help store' command"""100    resp = run_cmd("help store")101    assert "Control of Postfix queue content storage" in resp102def test_shell_help_select():103    """Test 'help select' command"""104    resp = run_cmd("help select")105    assert "Select mails from Postfix queue content" in resp106def test_shell_help_inspect():107    """Test 'help inspect' command"""108    resp = run_cmd("help inspect")109    assert "Mail content inspector" in resp110def test_shell_help_super():111    """Test 'help super' command"""112    resp = run_cmd("help super")113    assert "Call postsuper commands" in resp114def test_shell_store_status_unloaded():115    """Test 'store status' command with unloaded store"""116    resp = run_cmd("store status")117    assert "store is not loaded" in resp118def test_shell_store_load_error():119    """Test 'store load' command"""120    resp = run_cmd("store load notfound.txt")121    assert "*** Error: unable to load store" in resp122def test_shell_store_load():123    """Test 'store load' command"""124    resp = run_cmd("store load")125    assert "mails loaded from queue" in resp126def test_shell_store_status_loaded():127    """Test 'store status' command with loaded store"""128    resp = run_cmd("store status")129    assert "store loaded with " in resp130def test_shell_inspect_mails_not_found():131    resp = run_cmd("inspect mails XXXXXXXX")132    assert 'Mail IDs not found' in resp133def test_shell_inspect_mails():134    """Test 'inspect mails' command"""135    CONFIG['commands']['use_sudo'] = True136    qids = [mail.qid for mail in PQSHELL.pstore.mails[0:2]]137    resp = run_cmd("inspect mails %s %s" % (qids[0], qids[1]))138    assert qids[0] in resp139    assert qids[1] in resp140def test_shell_show():141    """Test 'show' command without arguments"""142    resp = run_cmd("show")143    assert "Generic viewer utility" in resp144def test_shell_show_invalid():145    """Test 'show invalid' command"""146    resp = run_cmd("show invalid")147    assert "*** Syntax error: show invalid" in resp148    resp = run_cmd("show selected limit invalid")149    assert "*** Syntax error: limit modifier needs a valid number" in resp150    resp = run_cmd("show selected rankby")151    assert "*** Syntax error: rankby requires a field" in resp152    resp = run_cmd("show selected rankby invalid")153    assert "*** Syntax error: elements cannot be ranked by" in resp154    resp = run_cmd("show selected sortby")155    assert "*** Syntax error: sortby requires a field" in resp156    resp = run_cmd("show selected sortby invalid")157    assert "*** Syntax error: elements cannot be sorted by" in resp158def test_shell_show_selected_limit():159    """Test 'show selected limit 2' command"""160    resp = run_cmd("show selected limit 2")161    assert "Preview of first 2" in resp162    assert len(resp.split('\n')) == 3163    resp = run_cmd("show selected limit 10000")164    assert "Preview of first 10000" not in resp165    assert len(resp.split('\n')) == 500166def test_shell_show_selected_sorted():167    """Test 'show selected sortby sender limit 2' command"""168    resp = run_cmd("show selected sortby sender asc limit 2")169    assert "Preview of first 2" in resp170    assert len(resp.split('\n')) == 3171    resp = run_cmd("show selected sortby sender desc limit 2")172    assert "Preview of first 2" in resp173    assert len(resp.split('\n')) == 3174def test_shell_show_selected_rankby():175    """Test 'show selected rankby' command"""176    resp = run_cmd("show selected rankby sender limit 2")177    assert "sender" in resp178    assert len(resp.split('\n')) == 5179def test_shell_show_selected_long_format():180    """Test 'show selected format' command"""181    resp = run_cmd("show selected limit 2 long")182    assert len(resp.split('\n')) == 7183def test_shell_show_filters_empty():184    """Test 'show filters' command without registered filters"""185    resp = run_cmd("show filters")186    assert "No filters applied on current selection" in resp187def test_shell_select():188    """Test 'select' command"""189    resp = run_cmd("select")190    assert "Select mails from Postfix queue content" in resp191def test_shell_select_sender():192    """Test 'select sender' command"""193    assert 'Selector resetted' in run_cmd("select reset")194    assert not len(run_cmd("select sender sender-1"))195    resp = run_cmd("show selected")196    assert "sender-1@" in resp197    assert len(resp.split('\n')) == 100198    assert 'Selector resetted' in run_cmd("select reset")199    assert not len(run_cmd("select sender sender-1 exact"))200    resp = run_cmd("show selected")201    assert "No element to display" in resp202    resp = run_cmd("select sender sender-1 invalid")203    assert "invalid keyword: invalid" in resp204def test_shell_select_recipient():205    """Test 'select recipient' command"""206    assert 'Selector resetted' in run_cmd("select reset")207    assert not len(run_cmd("select recipient user-1"))208    resp = run_cmd("show selected")209    assert len(resp.split('\n')) == 100210    assert 'Selector resetted' in run_cmd("select reset")211    assert not len(run_cmd("select recipient user-1 exact"))212    resp = run_cmd("show selected")213    assert "No element to display" in resp214    resp = run_cmd("select recipient user-1 invalid")215    assert "invalid keyword: invalid" in resp216def test_shell_select_invalid():217    """Test 'select invalid' command"""218    resp = run_cmd("select invalid")219    assert "has no subcommand:" in resp220def test_shell_select_qids():221    """Test 'select qids' command"""222    assert 'mails loaded from queue' in run_cmd("store load")223    assert 'Selector resetted with store content' in run_cmd("select reset")224    qids = [mail.qid for mail in PQSHELL.pstore.mails[0:2]]225    resp = run_cmd("select qids %s %s" % (qids[0], qids[1]))226    assert not len(resp)227    assert len(PQSHELL.selector.mails) == 2228def test_shell_select_status():229    """Test 'select status' command"""230    resp = run_cmd("select status deferred")231    assert not len(resp)232def test_shell_select_size():233    """Test 'select size' command"""234    resp = run_cmd("select size XXX")235    assert "specified sizes must be valid numbers" in resp236    resp = run_cmd("select size 262 262")237    assert "exact size must be used alone" in resp238    resp = run_cmd("select size +262 +262")239    assert "multiple min sizes specified" in resp240    resp = run_cmd("select size -262 -262")241    assert "multiple max sizes specified" in resp242    resp = run_cmd("select size -263 +266")243    assert "minimum size is greater than maximum size" in resp244    assert 'mails loaded from queue' in run_cmd("store load")245    assert 'Selector resetted with store content' in run_cmd("select reset")246    assert not len(run_cmd("select size 1000"))247    resp = run_cmd("show selected")248    assert "No element to display" in resp249    assert 'Selector resetted with store content' in run_cmd("select reset")250    assert not len(run_cmd("select size +200"))251    resp = run_cmd("show selected")252    assert len(resp.split("\n")) == 500253    assert 'Selector resetted with store content' in run_cmd("select reset")254    assert not len(run_cmd("select size -1000"))255    resp = run_cmd("show selected")256    assert len(resp.split("\n")) == 250257    assert 'Selector resetted with store content' in run_cmd("select reset")258    assert not len(run_cmd("select size +200 -1000"))259    resp = run_cmd("show selected")260    assert len(resp.split("\n")) == 250261def test_shell_select_date():262    """Test 'select date' command"""263    five_days = timedelta(5)264    now = datetime.now().strftime('%Y-%m-%d')265    five_days_ago = (datetime.now() - five_days).strftime('%Y-%m-%d')266    in_five_days = (datetime.now() + five_days).strftime('%Y-%m-%d')267    assert 'mails loaded from queue' in run_cmd("store load")268    assert 'Selector resetted with store content' in run_cmd("select reset")269    assert not len(run_cmd("select date %s" % now))270    resp = run_cmd("show selected")271    assert len(resp.split("\n")) == 500272    assert 'Selector resetted with store content' in run_cmd("select reset")273    assert not len(run_cmd("select date %s" % five_days_ago))274    resp = run_cmd("show selected")275    assert "No element to display" in resp276    assert 'Selector resetted with store content' in run_cmd("select reset")277    assert not len(run_cmd("select date +%s" % five_days_ago))278    resp = run_cmd("show selected")279    assert len(resp.split("\n")) == 500280    assert 'Selector resetted with store content' in run_cmd("select reset")281    assert not len(run_cmd("select date +%s" % in_five_days))282    resp = run_cmd("show selected")283    assert "No element to display" in resp284    assert 'Selector resetted with store content' in run_cmd("select reset")285    assert not len(run_cmd("select date %s..%s" % (five_days_ago,286                                                   in_five_days)))287    resp = run_cmd("show selected")288    assert len(resp.split("\n")) == 500289    assert 'Selector resetted with store content' in run_cmd("select reset")290    assert not len(run_cmd("select date -%s" % in_five_days))291    resp = run_cmd("show selected")292    assert len(resp.split("\n")) == 500293    resp = run_cmd("select date XXXX-XX-XX")294    assert "'XXXX-XX-XX' does not match format '%Y-%m-%d'" in resp295def test_shell_select_error():296    """Test 'select date' command"""297    assert 'mails loaded from queue' in run_cmd("store load")298    assert 'Selector resetted with store content' in run_cmd("select reset")299    assert not len(run_cmd("select error 'Test error message'"))300    resp = run_cmd("show selected")301    assert len(resp.split("\n")) == 16302def test_shell_show_filters():303    """Test 'show filters' command with registered filters"""304    assert 'Selector resetted with store content' in run_cmd("select reset")305    assert not len(run_cmd("select status deferred"))306    expected = ("0: select status:\n"307                "    status: deferred")308    resp = run_cmd("show filters")309    assert expected == resp310def test_shell_select_replay():311    """Test 'select replay' command"""312    resp = run_cmd("select replay")313    assert "Selector resetted and filters replayed" in resp314def test_shell_select_rmfilter():315    """Test 'select rmfilter' command"""316    resp = run_cmd("select rmfilter 0")317    assert not len(resp)318    resp = run_cmd("select rmfilter 666")319    assert "invalid filter ID: 666" in resp320def test_shell_select_reset():321    """Test 'select reset' command"""322    resp = run_cmd("select reset")323    assert "Selector resetted with store content" in resp324def test_shell_super_unloaded_or_no_selection():325    """Test QueueControl with an unloaded store"""326    loaded_at = PQSHELL.pstore.loaded_at327    setattr(PQSHELL.pstore, 'loaded_at', None)328    resp = run_cmd("super hold")329    assert 'The store is not loaded' in resp330    setattr(PQSHELL.pstore, 'loaded_at', loaded_at)331    setattr(PQSHELL.selector, 'mails', [])332    resp = run_cmd("super hold")333    assert 'No mail selected' in resp334    run_cmd("select reset")335def test_shell_super_hold():336    """Test 'select reset' command"""337    CONFIG['commands']['use_sudo'] = True338    resp = run_cmd("super hold")339    assert "postsuper: Placed on hold" in resp340def test_shell_super_release():341    """Test 'select reset' command"""342    CONFIG['commands']['use_sudo'] = True343    resp = run_cmd("super release")344    assert "postsuper: Released" in resp345def test_shell_super_requeue():346    """Test 'super requeue' command"""347    CONFIG['commands']['use_sudo'] = True348    resp = run_cmd("super requeue")349    assert "postsuper: Requeued" in resp350def test_shell_super_delete():351    """Test 'select reset' command"""352    CONFIG['commands']['use_sudo'] = True353    resp = run_cmd("super delete")...blt.js
Source:blt.js  
...74        resolve(sum/count)75    });76}77exports.getCommand = (cmd_key) => cmd_replacer(cmd_key)78exports.db_stop = () => run_cmd(commands.db_stop)79exports.db_start = () => run_cmd(commands.db_start)80exports.sdb_go = () => run_cmd(commands.sdb_go)81exports.restartBlt = () => run_cmd(commands.restart_blt)82exports.sync_blt = () => run_cmd(commands.sync_blt)83exports.build_blt = () => run_cmd(commands.build_blt)84exports.build_pre_blt = () => run_cmd(commands.build_pre_blt)85exports.ide_blt = () => run_cmd(commands.ide_blt)86exports.enable_blt = () => run_cmd(commands.enable_blt)87exports.disable_blt = () => run_cmd(commands.disable_blt)88exports.start_blt = () => run_cmd(commands.start_blt)89exports.stop_blt = () => run_cmd(commands.stop_blt)90exports.adventure_build = () => run_cmd(commands.adventure_build)91exports.enable_force = () => run_cmd(commands.enable_force)92// fast running commands use _cmd93exports.get_project_dirs = () => _cmd(commands.get_project_dirs)94exports.get_project_dir_status = () => _cmd(commands.get_project_dir_status)95exports.get_project = () => new Promise(resolve => resolve(projectDir))96exports.set_project = (dir) => new Promise(resolve => {97    working_dir = resolveHome(path.join("~", "blt", dir));98    projectDir = dir99    project = proj+projectDir100    working_dir_cmd = "cd " + working_dir + " && ";101    fs.writeFileSync(constants.projectFile,dir)102    resolve(working_dir)103})104exports.killblt = (timeout) => {105    if(timeout === undefined)...test_phone_book.py
Source:test_phone_book.py  
...5@pytest.fixture6def no_db():7    with contextlib.suppress(Exception):8        os.unlink("directory.db")9def run_cmd(cmd):10    cmd = cmd.split()11    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)12    ret = p.wait()13    return ret, p.stdout.read().decode("ascii").strip()14def test_list_without_db(no_db):15    exit_status, op = run_cmd("./phone_book list")16    assert exit_status == 117    assert op == "Couldn't open database file: No such file or directory"18def test_search_without_db(no_db):19    exit_status, op = run_cmd("./phone_book search foo")20    assert exit_status == 121    assert op == "Couldn't open database file: No such file or directory"22def test_delete_without_db(no_db):23    exit_status, op = run_cmd("./phone_book delete foo")24    assert exit_status == 125    assert op == "Couldn't open database file: No such file or directory"26def test_adding_listing(no_db):27    exit_status, _ = run_cmd("./phone_book add john 1234567890")28    assert exit_status == 029    exit_status, _ = run_cmd("./phone_book add jack 0987654321")30    assert exit_status == 031    exit_status, _ = run_cmd("./phone_book add james 5432167890")32    assert exit_status == 033    exit_status, op = run_cmd("./phone_book list")34    assert exit_status == 035    expected = """john                 : 123456789036jack                 : 098765432137james                : 543216789038Total entries :  3"""39    assert (op == expected)40def test_adding_searching_found(no_db):41    exit_status, _ = run_cmd("./phone_book add john 1234567890")42    assert exit_status == 043    exit_status, _ = run_cmd("./phone_book add jack 0987654321")44    assert exit_status == 045    exit_status, _ = run_cmd("./phone_book add james 5432167890")46    assert exit_status == 047    exit_status, op = run_cmd("./phone_book search john")48    assert exit_status == 049    expected = "1234567890"50    assert (op == expected)51def test_adding_searching_notfound(no_db):52    exit_status, _ = run_cmd("./phone_book add john 1234567890")53    assert exit_status == 054    exit_status, _ = run_cmd("./phone_book add jack 0987654321")55    assert exit_status == 056    exit_status, _ = run_cmd("./phone_book add james 5432167890")57    assert exit_status == 058    exit_status, op = run_cmd("./phone_book search wick")59    assert exit_status == 160    expected = "no match"61    assert (op == expected)62def test_adding_deleting_nonexistent(no_db):63    exit_status, _ = run_cmd("./phone_book add john 1234567890")64    assert exit_status == 065    exit_status, _ = run_cmd("./phone_book add jack 0987654321")66    assert exit_status == 067    exit_status, _ = run_cmd("./phone_book add james 5432167890")68    assert exit_status == 069    exit_status, op = run_cmd("./phone_book delete wick")70    assert exit_status == 171    expected = "no match"72    assert (op == expected)73def test_adding_deleting_first_list(no_db):74    exit_status, _ = run_cmd("./phone_book add john 1234567890")75    assert exit_status == 076    exit_status, _ = run_cmd("./phone_book add jack 0987654321")77    assert exit_status == 078    exit_status, _ = run_cmd("./phone_book add james 5432167890")79    assert exit_status == 080    exit_status, op = run_cmd("./phone_book delete john")81    assert exit_status == 082    exit_status, op = run_cmd("./phone_book list")83    assert exit_status == 084    expected = """jack                 : 098765432185james                : 543216789086Total entries :  2"""87    assert (op == expected)88    89def test_adding_deleting_middle_list(no_db):90    exit_status, _ = run_cmd("./phone_book add john 1234567890")91    assert exit_status == 092    exit_status, _ = run_cmd("./phone_book add jack 0987654321")93    assert exit_status == 094    exit_status, _ = run_cmd("./phone_book add james 5432167890")95    assert exit_status == 096    exit_status, op = run_cmd("./phone_book delete jack")97    assert exit_status == 098    exit_status, op = run_cmd("./phone_book list")99    assert exit_status == 0100    expected = """john                 : 1234567890101james                : 5432167890102Total entries :  2"""103    assert (op == expected)104    105def test_valgrind(no_db):106    run_cmd("./phone_book add john 1234567890")107    run_cmd("./phone_book add jack 0987654321")108    run_cmd("./phone_book add james 5432167890")109    exit_status, op = run_cmd("valgrind ./phone_book list")110    assert "All heap blocks were freed -- no leaks are possible" in op, "Memory is not being properly freed"111    112    ...setup_network_config.py
Source:setup_network_config.py  
...4from subprocess import PIPE5import sys6args = sys.argv7malware_repository_ipaddr = args[1]8def run_cmd(cmd):9    proc = subprocess.run(cmd, shell=True, stdout=PIPE, stderr=PIPE)10    return proc11run_cmd("sudo iptables -N  userchain_forward")12run_cmd("sudo iptables -A userchain_forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT")13run_cmd("sudo iptables -A userchain_forward -i mybridge -o eth0 -j ACCEPT")14run_cmd("sudo iptables -I FORWARD 1 -j userchain_forward")15run_cmd("sudo iptables -I userchain_forward -p tcp --dport 23 -j DROP")16run_cmd("sudo iptables -I userchain_forward -p udp --dport 23 -j DROP")17run_cmd("sudo iptables -I userchain_forward -p tcp --dport 2323 -j DROP")18run_cmd("sudo iptables -I userchain_forward -p udp --dport 2323 -j DROP")19#iptables input20run_cmd("sudo iptables -N userchain_input")21run_cmd("sudo iptables -I userchain_input -p udp --dport 67 -i mybridge -j ACCEPT")22run_cmd("sudo iptables -I userchain_input -p udp --dport 53 -s 172.20.0.0/16 -j ACCEPT")23run_cmd("sudo iptables -I userchain_input -p tcp --dport 53 -s 172.20.0.0/16 -j ACCEPT")24run_cmd("sudo iptables -I INPUT 1 -j userchain_input")25run_cmd("sudo iptables -I userchain_input -p tcp --dport 23 -j DROP")26run_cmd("sudo iptables -I userchain_input -p udp --dport 23 -j DROP")27run_cmd("sudo iptables -I userchain_input -p tcp --dport 2323 -j DROP")28run_cmd("sudo iptables -I userchain_input -p udp --dport 2323 -j DROP")29## This is to suppress the excessive access to port 23 (telnet) that could be caused by Mirai.30run_cmd("iptables -I INPUT -p tcp -i mybridge --syn --dport 23 -m connlimit --connlimit-above 5 -j REJECT")31proc = subprocess.run(["pgrep", "-f", "dnsmasq"], stdout=PIPE, stderr=PIPE)32dnsmasq_pid = proc.stdout.decode("utf-8")33if len(dnsmasq_pid) > 0:34    run_cmd("pgrep -f dnsmasq | xargs sudo kill -KILL")35run_cmd("sudo brctl addbr mybridge")36run_cmd("sudo ip link set mybridge up")37run_cmd("sudo dnsmasq --interface=mybridge --bind-interfaces --dhcp-range=172.20.222.2,172.20.222.254")38run_cmd("sudo ip addr add 172.20.0.1/16 dev mybridge")39run_cmd("sudo ip tuntap add mode tap vport1 user shun")40run_cmd("sudo brctl addif mybridge vport1")41run_cmd("sudo ifconfig vport1 promisc up")42run_cmd("sudo ip tuntap add mode tap vport2 user shun")43run_cmd("sudo brctl addif mybridge vport2")44run_cmd("sudo ifconfig vport2 promisc up")45run_cmd("sudo iptables -t nat -I POSTROUTING -o mybridge -j MASQUERADE")46# 172.20.222.xxx (Sandbox machine is at 172.20.222.240), redirect to fakedns47run_cmd("sudo iptables -t nat -I PREROUTING -i mybridge -p udp --dport 53 -j DNAT -s 172.20.222.0/24 --to 172.20.100.100:53")48run_cmd("sudo iptables -t nat -I PREROUTING -i mybridge -p tcp --dport 8000 -j DNAT -s 172.20.222.0/24 --to {}:8000".format(malware_repository_ipaddr))49run_cmd("sudo iptables -A INPUT -p tcp --syn -m state --state NEW --dport 8000 -m limit --limit 4/m --limit-burst 4 -j ACCEPT")50run_cmd("sudo iptables -A INPUT -p tcp --syn -m state --state NEW --dport 8000 -j DROP")51activated_port = [21, 22, 23, 25, 443, 990, 1, 995, 37, 7, 9, 6667, 13, 2222, 110, 2223, 79, 80, 2224, 465, 17, 113, 19]52for i in activated_port:53    comm = "sudo iptables -t nat -I PREROUTING -i mybridge -p tcp --dport {port} -j DNAT -s 172.20.222.0/24 --to 172.20.100.100:{port}".format(port=i)54    run_cmd(comm)55#Use "-A" option to add new rule at the end of the chain. As for destination ports from 1 to 65535 that are not set above, direct them to an arbitrary port, 6667 or IRC.56run_cmd("sudo iptables -A PREROUTING -t nat -i mybridge -p tcp --dport 1:65535 -j DNAT --to-destination 172.20.100.100:6667")57#dns setting (backup)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
