Best Atoum code snippet using iterator
iterator_023.phpt
Source:iterator_023.phpt
1--TEST--2SPL: RecursiveIteratorIterator and catch getChildren3--FILE--4<?php5class MyRecursiveArrayIterator extends RecursiveArrayIterator6{7 function getChildren()8 {9 echo __METHOD__ . "\n";10 return $this->current();11 }12 function valid()13 {14 if (!parent::valid())15 {16 echo __METHOD__ . " = false\n";17 return false;18 }19 else20 {21 return true;22 }23 }24}25class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator26{27 private $max_depth;28 private $over = 0;29 private $skip = false;30 function __construct($it, $max_depth)31 {32 $this->max_depth = $max_depth;33 parent::__construct($it, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);34 }35 function rewind()36 {37 echo __METHOD__ . "\n";38 $this->skip = false;39 parent::rewind();40 }41 function valid()42 {43 echo __METHOD__ . "\n";44 if ($this->skip)45 {46 $this->skip = false;47 $this->next();48 }49 return parent::valid();50 }51 function current()52 {53 echo __METHOD__ . "\n";54 return parent::current();55 }56 function key()57 {58 echo __METHOD__ . "\n";59 return parent::key();60 }61 function next()62 {63 echo __METHOD__ . "\n";64 parent::next();65 }66 function callHasChildren()67 {68 $this->skip = false;69 $has = parent::callHasChildren();70 $res = $this->getDepth() < $this->max_depth && $has;71 echo __METHOD__ . "(".$this->getDepth().") = ".($res?"yes":"no")."/".($has?"yes":"no")."\n";72 if ($has && !$res)73 {74 $this->over++;75 if ($this->over == 2) {76 $this->skip = true;77 }78 }79 return $res;80 }81 function callGetChildren()82 {83 if ($this->over == 2)84 {85 echo __METHOD__ . "(throw)\n";86 throw new Exception("Thrown in callGetChildren()");87 }88 echo __METHOD__ . "(ok:{$this->over})\n";89 return new MyRecursiveArrayIterator($this->current());90 }91 function beginChildren()92 {93 echo __METHOD__ . "(".$this->getDepth().")\n";94 }95 function endChildren()96 {97 echo __METHOD__ . "(".$this->getDepth().")\n";98 }99}100try101{102 foreach(new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"), array("bcba"))), array("ca"), "d")), 2) as $k=>$v)103 {104 if (is_array($v)) $v = join('',$v);105 echo "$k=>$v\n";106 }107}108catch(UnexpectedValueException $e)109{110 echo $e->getMessage() . "\n";111}112?>113--EXPECT--114RecursiveArrayIteratorIterator::rewind115RecursiveArrayIteratorIterator::callHasChildren(0) = no/no116RecursiveArrayIteratorIterator::valid117RecursiveArrayIteratorIterator::current118RecursiveArrayIteratorIterator::key1190=>a120RecursiveArrayIteratorIterator::next121RecursiveArrayIteratorIterator::callHasChildren(0) = yes/yes122RecursiveArrayIteratorIterator::callGetChildren(ok:0)123RecursiveArrayIteratorIterator::current124RecursiveArrayIteratorIterator::beginChildren(1)125RecursiveArrayIteratorIterator::callHasChildren(1) = no/no126RecursiveArrayIteratorIterator::valid127RecursiveArrayIteratorIterator::current128RecursiveArrayIteratorIterator::key1290=>ba130RecursiveArrayIteratorIterator::next131RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes132RecursiveArrayIteratorIterator::callGetChildren(ok:0)133RecursiveArrayIteratorIterator::current134RecursiveArrayIteratorIterator::beginChildren(2)135RecursiveArrayIteratorIterator::callHasChildren(2) = no/no136RecursiveArrayIteratorIterator::valid137RecursiveArrayIteratorIterator::current138RecursiveArrayIteratorIterator::key1390=>bba140RecursiveArrayIteratorIterator::next141RecursiveArrayIteratorIterator::callHasChildren(2) = no/no142RecursiveArrayIteratorIterator::valid143RecursiveArrayIteratorIterator::current144RecursiveArrayIteratorIterator::key1451=>bbb146RecursiveArrayIteratorIterator::next147MyRecursiveArrayIterator::valid = false148RecursiveArrayIteratorIterator::endChildren(2)149RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes150RecursiveArrayIteratorIterator::callGetChildren(ok:0)151RecursiveArrayIteratorIterator::current152RecursiveArrayIteratorIterator::beginChildren(2)153RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes154RecursiveArrayIteratorIterator::valid155RecursiveArrayIteratorIterator::current156RecursiveArrayIteratorIterator::key1570=>bcaa158RecursiveArrayIteratorIterator::next159RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes160RecursiveArrayIteratorIterator::valid161RecursiveArrayIteratorIterator::next162MyRecursiveArrayIterator::valid = false163RecursiveArrayIteratorIterator::endChildren(2)164MyRecursiveArrayIterator::valid = false165RecursiveArrayIteratorIterator::endChildren(1)166RecursiveArrayIteratorIterator::callHasChildren(0) = yes/yes167RecursiveArrayIteratorIterator::callGetChildren(throw)168RecursiveArrayIteratorIterator::callHasChildren(0) = no/no169RecursiveArrayIteratorIterator::current170RecursiveArrayIteratorIterator::key1713=>d172RecursiveArrayIteratorIterator::next173MyRecursiveArrayIterator::valid = false174RecursiveArrayIteratorIterator::valid175MyRecursiveArrayIterator::valid = false...
iterator_021.phpt
Source:iterator_021.phpt
1--TEST--2SPL: RecursiveIteratorIterator and hasChildren3--FILE--4<?php5class MyRecursiveArrayIterator extends RecursiveArrayIterator6{7 function valid()8 {9 if (!parent::valid())10 {11 echo __METHOD__ . " = false\n";12 return false;13 }14 else15 {16 return true;17 }18 }19 function getChildren()20 {21 echo __METHOD__ . "\n";22 return parent::getChildren();23 }24}25class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator26{27 private $max_depth;28 private $over = 0;29 private $skip = false;30 function __construct($it, $max_depth)31 {32 $this->max_depth = $max_depth;33 parent::__construct($it);34 }35 function rewind()36 {37 echo __METHOD__ . "\n";38 $this->skip = false;39 parent::rewind();40 }41 function valid()42 {43 echo __METHOD__ . "\n";44 if ($this->skip)45 {46 $this->skip = false;47 $this->next();48 }49 return parent::valid();50 }51 function current()52 {53 echo __METHOD__ . "\n";54 return parent::current();55 }56 function key()57 {58 echo __METHOD__ . "\n";59 return parent::key();60 }61 function next()62 {63 echo __METHOD__ . "\n";64 parent::next();65 }66 function callHasChildren()67 {68 $this->skip = false;69 $has = parent::callHasChildren();70 $res = $this->getDepth() < $this->max_depth && $has;71 echo __METHOD__ . "(".$this->getDepth().") = ".($res?"yes":"no")."/".($has?"yes":"no")."\n";72 if ($has && !$res)73 {74 $this->over++;75 if ($this->over == 2) {76 $this->skip = true;77 }78 }79 return $res;80 }81 function beginChildren()82 {83 echo __METHOD__ . "(".$this->getDepth().")\n";84 }85 function endChildren()86 {87 echo __METHOD__ . "(".$this->getDepth().")\n";88 }89}90foreach(new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"), array("bcba"))), array("ca"), "d")), 2) as $k=>$v)91{92 if (is_array($v)) $v = join('',$v);93 echo "$k=>$v\n";94}95?>96--EXPECT--97RecursiveArrayIteratorIterator::rewind98RecursiveArrayIteratorIterator::callHasChildren(0) = no/no99RecursiveArrayIteratorIterator::valid100RecursiveArrayIteratorIterator::current101RecursiveArrayIteratorIterator::key1020=>a103RecursiveArrayIteratorIterator::next104RecursiveArrayIteratorIterator::callHasChildren(0) = yes/yes105MyRecursiveArrayIterator::getChildren106RecursiveArrayIteratorIterator::beginChildren(1)107RecursiveArrayIteratorIterator::callHasChildren(1) = no/no108RecursiveArrayIteratorIterator::valid109RecursiveArrayIteratorIterator::current110RecursiveArrayIteratorIterator::key1110=>ba112RecursiveArrayIteratorIterator::next113RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes114MyRecursiveArrayIterator::getChildren115RecursiveArrayIteratorIterator::beginChildren(2)116RecursiveArrayIteratorIterator::callHasChildren(2) = no/no117RecursiveArrayIteratorIterator::valid118RecursiveArrayIteratorIterator::current119RecursiveArrayIteratorIterator::key1200=>bba121RecursiveArrayIteratorIterator::next122RecursiveArrayIteratorIterator::callHasChildren(2) = no/no123RecursiveArrayIteratorIterator::valid124RecursiveArrayIteratorIterator::current125RecursiveArrayIteratorIterator::key1261=>bbb127RecursiveArrayIteratorIterator::next128MyRecursiveArrayIterator::valid = false129RecursiveArrayIteratorIterator::endChildren(2)130RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes131MyRecursiveArrayIterator::getChildren132RecursiveArrayIteratorIterator::beginChildren(2)133RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes134RecursiveArrayIteratorIterator::valid135RecursiveArrayIteratorIterator::current136RecursiveArrayIteratorIterator::key1370=>bcaa138RecursiveArrayIteratorIterator::next139RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes140RecursiveArrayIteratorIterator::valid141RecursiveArrayIteratorIterator::next142MyRecursiveArrayIterator::valid = false143RecursiveArrayIteratorIterator::endChildren(2)144MyRecursiveArrayIterator::valid = false145RecursiveArrayIteratorIterator::endChildren(1)146RecursiveArrayIteratorIterator::callHasChildren(0) = yes/yes147MyRecursiveArrayIterator::getChildren148RecursiveArrayIteratorIterator::beginChildren(1)149RecursiveArrayIteratorIterator::callHasChildren(1) = no/no150RecursiveArrayIteratorIterator::current151RecursiveArrayIteratorIterator::key1520=>ca153RecursiveArrayIteratorIterator::next154MyRecursiveArrayIterator::valid = false155RecursiveArrayIteratorIterator::endChildren(1)156RecursiveArrayIteratorIterator::callHasChildren(0) = no/no157RecursiveArrayIteratorIterator::valid158RecursiveArrayIteratorIterator::current159RecursiveArrayIteratorIterator::key1603=>d161RecursiveArrayIteratorIterator::next162MyRecursiveArrayIterator::valid = false163RecursiveArrayIteratorIterator::valid164MyRecursiveArrayIterator::valid = false...
iterator_014.phpt
Source:iterator_014.phpt
1--TEST--2SPL: RecursiveIteratorIterator and beginChildren/endChildren3--FILE--4<?php5class MyRecursiveArrayIterator extends RecursiveArrayIterator6{7 function valid()8 {9 if (!parent::valid())10 {11 echo __METHOD__ . " = false\n";12 return false;13 }14 else15 {16 return true;17 }18 }19 function getChildren()20 {21 echo __METHOD__ . "\n";22 return parent::getChildren();23 }24}25class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator26{27 function rewind()28 {29 echo __METHOD__ . "\n";30 parent::rewind();31 }32 function valid()33 {34 echo __METHOD__ . "\n";35 return parent::valid();36 }37 function current()38 {39 echo __METHOD__ . "\n";40 return parent::current();41 }42 function key()43 {44 echo __METHOD__ . "\n";45 return parent::key();46 }47 function next()48 {49 echo __METHOD__ . "\n";50 parent::next();51 }52 function beginChildren()53 {54 echo __METHOD__ . "(".$this->getDepth().")\n";55 }56 function endChildren()57 {58 echo __METHOD__ . "(".$this->getDepth().")\n";59 }60}61foreach(new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d"))) as $k=>$v)62{63 echo "$k=>$v\n";64}65?>66--EXPECT--67RecursiveArrayIteratorIterator::rewind68RecursiveArrayIteratorIterator::valid69RecursiveArrayIteratorIterator::current70RecursiveArrayIteratorIterator::key710=>a72RecursiveArrayIteratorIterator::next73MyRecursiveArrayIterator::getChildren74RecursiveArrayIteratorIterator::beginChildren(1)75RecursiveArrayIteratorIterator::valid76RecursiveArrayIteratorIterator::current77RecursiveArrayIteratorIterator::key780=>ba79RecursiveArrayIteratorIterator::next80MyRecursiveArrayIterator::getChildren81RecursiveArrayIteratorIterator::beginChildren(2)82RecursiveArrayIteratorIterator::valid83RecursiveArrayIteratorIterator::current84RecursiveArrayIteratorIterator::key850=>bba86RecursiveArrayIteratorIterator::next87RecursiveArrayIteratorIterator::valid88RecursiveArrayIteratorIterator::current89RecursiveArrayIteratorIterator::key901=>bbb91RecursiveArrayIteratorIterator::next92MyRecursiveArrayIterator::valid = false93RecursiveArrayIteratorIterator::endChildren(2)94MyRecursiveArrayIterator::getChildren95RecursiveArrayIteratorIterator::beginChildren(2)96MyRecursiveArrayIterator::getChildren97RecursiveArrayIteratorIterator::beginChildren(3)98RecursiveArrayIteratorIterator::valid99RecursiveArrayIteratorIterator::current100RecursiveArrayIteratorIterator::key1010=>bcaa102RecursiveArrayIteratorIterator::next103MyRecursiveArrayIterator::valid = false104RecursiveArrayIteratorIterator::endChildren(3)105MyRecursiveArrayIterator::valid = false106RecursiveArrayIteratorIterator::endChildren(2)107MyRecursiveArrayIterator::valid = false108RecursiveArrayIteratorIterator::endChildren(1)109MyRecursiveArrayIterator::getChildren110RecursiveArrayIteratorIterator::beginChildren(1)111RecursiveArrayIteratorIterator::valid112RecursiveArrayIteratorIterator::current113RecursiveArrayIteratorIterator::key1140=>ca115RecursiveArrayIteratorIterator::next116MyRecursiveArrayIterator::valid = false117RecursiveArrayIteratorIterator::endChildren(1)118RecursiveArrayIteratorIterator::valid119RecursiveArrayIteratorIterator::current120RecursiveArrayIteratorIterator::key1213=>d122RecursiveArrayIteratorIterator::next123MyRecursiveArrayIterator::valid = false124RecursiveArrayIteratorIterator::valid125MyRecursiveArrayIterator::valid = false...
iterator
Using AI Code Generation
1require_once 'vendor/autoload.php';2use mageekguy\atoum;3$script = new atoum\scripts\runner();4$script->addDefaultReport();5$runner = new atoum\runner();6$runner->setBootstrapFile('bootstrap.php');7$runner->addTestsFromDirectory('tests/');8$runner->run();9require_once 'vendor/autoload.php';10use mageekguy\atoum;11use mageekguy\atoum\scripts;12$script = new scripts\runner();13$script->addDefaultReport();14$runner = new atoum\runner();15$runner->setBootstrapFile('bootstrap.php');16$runner->addTestsFromDirectory('tests/');17$runner->run();18require_once 'vendor/autoload.php';19use mageekguy\atoum;20use mageekguy\atoum\scripts;21$script = new scripts\runner();22$script->addDefaultReport();23$runner = new atoum\runner();24$runner->setBootstrapFile('bootstrap.php');25$runner->addTestsFromDirectory('tests/');26$runner->run();27require_once 'vendor/autoload.php';28use mageekguy\atoum;29use mageekguy\atoum\scripts;30$script = new scripts\runner();31$script->addDefaultReport();32$runner = new atoum\runner();33$runner->setBootstrapFile('bootstrap.php');34$runner->addTestsFromDirectory('tests/');35$runner->run();36require_once 'vendor/autoload.php';37use mageekguy\atoum;38use mageekguy\atoum\scripts;39$script = new scripts\runner();40$script->addDefaultReport();41$runner = new atoum\runner();42$runner->setBootstrapFile('bootstrap.php');43$runner->addTestsFromDirectory('tests/');44$runner->run();45require_once 'vendor/autoload.php';46use mageekguy\atoum;
iterator
Using AI Code Generation
1$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));2foreach($it as $file)3{4 if ($file->isFile() && $file->getExtension() == 'php') {5 require_once $file->getPathname();6 }7}8$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));9foreach($it as $file)10{11 if ($file->isFile() && $file->getExtension() == 'php') {12 require_once $file->getPathname();13 }14}15$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));16foreach($it as $file)17{18 if ($file->isFile() && $file->getExtension() == 'php') {19 require_once $file->getPathname();20 }21}22$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));23foreach($it as $file)24{25 if ($file->isFile() && $file->getExtension() == 'php') {26 require_once $file->getPathname();27 }28}29$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));30foreach($it as $file)31{32 if ($file->isFile() && $file->getExtension() == 'php') {33 require_once $file->getPathname();34 }35}36$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/tests/units/'));37foreach($it as $file)38{39 if ($file->isFile() && $file->getExtension() == 'php') {40 require_once $file->getPathname();41 }42}43$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(__DIR__ . '/
iterator
Using AI Code Generation
1use mageekguy\atoum\iterators\php\controller as iterator;2$iterator = new iterator(__DIR__);3$iterator->addDirectory('classes');4$iterator->addDirectory('tests');5$iterator->excludeDirectory('tests/units');6$script->getRunner()->addTestsFromIterator($iterator);7use mageekguy\atoum\iterators\recursives\directory as iterator;8$iterator = new iterator(__DIR__);9$iterator->addDirectory('classes');10$iterator->addDirectory('tests');11$iterator->excludeDirectory('tests/units');12$script->getRunner()->addTestsFromIterator($iterator);13use mageekguy\atoum\iterators\recursives\directory as iterator;14$iterator = new iterator(__DIR__);15$iterator->addDirectory('classes');16$iterator->addDirectory('tests');17$iterator->excludeDirectory('tests/units');18$script->getRunner()->addTestsFromIterator($iterator);19use mageekguy\atoum\iterators\recursives\directory as iterator;20$iterator = new iterator(__DIR__);21$iterator->addDirectory('classes');22$iterator->addDirectory('tests');23$iterator->excludeDirectory('tests/units');24$script->getRunner()->addTestsFromIterator($iterator);25use mageekguy\atoum\iterators\recursives\directory as iterator;26$iterator = new iterator(__DIR__);27$iterator->addDirectory('classes');28$iterator->addDirectory('tests');29$iterator->excludeDirectory('tests/units');30$script->getRunner()->addTestsFromIterator($iterator);31use mageekguy\atoum\iterators\recursives\directory as iterator;32$iterator = new iterator(__DIR__);33$iterator->addDirectory('classes');34$iterator->addDirectory('tests');35$iterator->excludeDirectory('tests/units');36$script->getRunner()->addTestsFromIterator($iterator);
iterator
Using AI Code Generation
1require_once 'vendor/autoload.php';2use Atoum\Atoum;3use Atoum\Iterator;4use Atoum\Iterator\Filter;5use Atoum\Iterator\Filter\Directory;6use Atoum\Iterator\Filter\File;7use Atoum\Iterator\Filter\Not;8use Atoum\Iterator\Filter\OrFilter;9use Atoum\Iterator\Filter\AndFilter;10use Atoum\Iterator\Filter\Regex;11use Atoum\Iterator\Filter\Size;12use Atoum\Iterator\Filter\Size\Max;13use Atoum\Iterator\Filter\Size\Min;14use Atoum\Iterator\Filter\Size\Range;15use Atoum\Iterator\Filter\Size\Not\Max;16use Atoum\Iterator\Filter\Size\Not\Min;17use Atoum\Iterator\Filter\Size\Not\Range;18use Atoum\Iterator\Filter\Size\Not\Size;19use Atoum\Iterator\Filter\Size\Not\Zero;20use Atoum\Iterator\Filter\Size\Zero;21use Atoum\Iterator\Filter\Size\Not;22use Atoum\Iterator\Filter\Suffix;23use Atoum\Iterator\Filter\Not\Suffix;24use Atoum\Iterator\Filter\Not\Regex;25use Atoum\Iterator\Filter\Not\Directory;26use Atoum\Iterator\Filter\Not\File;27use Atoum\Iterator\Filter\Not\OrFilter;28use Atoum\Iterator\Filter\Not\AndFilter;29use Atoum\Iterator\Filter\Not\Not;30use Atoum\Iterator\Filter\Not\Not\Not;31use Atoum\Iterator\Filter\Not\Not\Not\Not;32use Atoum\Iterator\Filter\Not\Not\Not\Not\Not;33use Atoum\Iterator\Filter\Not\Not\Not\Not\Not\Not;34use Atoum\Iterator\Filter\Not\Not\Not\Not\Not\Not\Not;35use Atoum\Iterator\Filter\Not\Not\Not\Not\Not\Not\Not\Not;
iterator
Using AI Code Generation
1$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));2foreach($iterator as $file) {3 echo $file->getFilename();4}5$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));6foreach($iterator as $file) {7 echo $file->getFilename();8}9$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));10foreach($iterator as $file) {11 echo $file->getFilename();12}13$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));14foreach($iterator as $file) {15 echo $file->getFilename();16}17$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));18foreach($iterator as $file) {19 echo $file->getFilename();20}21$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));22foreach($iterator as $file) {23 echo $file->getFilename();24}25$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));26foreach($iterator as $file) {27 echo $file->getFilename();28}29$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));30foreach($iterator as $file) {31 echo $file->getFilename();32}33$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));34foreach($iterator as $file) {35 echo $file->getFilename();36}37$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator('/home/test/'));38foreach($iterator as $file)
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.
Trigger Selenium automation tests on a cloud-based Grid of 3000+ real browsers and operating systems.
Test now for FreeGet 100 minutes of automation test minutes FREE!!