public function testAddSummaryVariantOnlyDescribedOnGenomicLevel() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("View genomic variant")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/0000000003$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::id("tab_submit")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*Please reconsider to submit individual data as well, as it makes the data you submit much more valuable![\\s\\S]*$/', $this->getConfirmation())); $this->chooseOkOnNextConfirmation(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&reference=Genome$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Paternal (confirmed)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="chromosome"]/option[text()="15"]')); $option->click(); $this->enterValue(WebDriverBy::name("VariantOnGenome/DNA"), "g.40702976G>T"); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); // Move mouse to let browser hide tooltip of pubmed link (needed for chrome) $this->driver->getMouse()->mouseMove(null, 200, 200); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "11/10000"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); }
public function testAddScreeningToHealthyIndividual() { // wait for page redirect $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b"))); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/individual\\/00000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings[\\s\\S]create&target=00000001$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="RNA (cDNA)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="Protein"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for Comparative Genomic Hybridisation"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for resequencing"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for SNP typing"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genes[]"]/option[text()="IVD (isovaleryl-CoA dehydrogenase)"]')); $option->click(); $this->check(WebDriverBy::name("variants_found")); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create screening information entry']")); $element->click(); $this->assertEquals("Successfully created the screening entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testTestReadOnlyState() { // Test that LOVD is in the read-only state. // First, log out of any session that might exist at this time. $this->logout(); // There should be no link to register yourself. // First, I had this findElements(), but Chrome doesn't like that at all, and times out. // Firefox anyway took quite some time, because of the timeout that we have set if elements are not found immediately (normally needed if pages load slowly). // $this->assertFalse((bool) count($this->driver->findElements(WebDriverBy::xpath('//a/b[text()="Register as submitter"]')))); // New attempt to test for absence of register link. $this->assertFalse(strpos($this->driver->findElement(WebDriverBy::xpath('//table[@class="logo"]//td[3]'))->getText(), 'Register as submitter')); $this->driver->get(ROOT_URL . '/src/login'); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/login$/', $this->driver->getCurrentURL())); // Verify warning exists. Finds any TD with this text. $this->driver->findElement(WebDriverBy::xpath('//td[text()="This installation is currently configured to be read-only. Only Managers and higher level users can log in."]')); // Attempt to log in, should fail in a specific way. $this->enterValue(WebDriverBy::name('username'), 'submitter'); $this->enterValue(WebDriverBy::name('password'), 'test1234'); $element = $this->driver->findElement(WebDriverBy::xpath('//input[@value="Log in"]')); $element->click(); // Should return a proper error message. $this->assertEquals('This installation is currently configured to be read-only. Your user level is not sufficient to log in.', $this->driver->findElement(WebDriverBy::cssSelector('div[class=err]'))->getText()); // Also curators should fail. $this->enterValue(WebDriverBy::name('username'), 'curator'); $this->enterValue(WebDriverBy::name('password'), 'test1234'); $element = $this->driver->findElement(WebDriverBy::xpath('//input[@value="Log in"]')); $element->click(); // Should return a proper error message. $this->assertEquals('This installation is currently configured to be read-only. Your user level is not sufficient to log in.', $this->driver->findElement(WebDriverBy::cssSelector('div[class=err]'))->getText()); }
public function testPostFinishAddPhenotypeInfoToIVAIndividual() { $element = $this->driver->findElement(WebDriverBy::id("tab_individuals")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals\\/IVD$/', $this->driver->getCurrentURL())); // $element = $this->driver->findElement(WebDriverBy::cssSelector("#00000002 > td.ordered")); $element = $this->driver->findElement(WebDriverBy::xpath("//td[text()='00000002']")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals\\/00000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::id("viewentryOptionsButton_Individuals")); $element->click(); $element = $this->driver->findElement(WebDriverBy::linkText("Add phenotype information to individual")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/phenotypes[\\s\\S]create&target=00000002$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("Phenotype/Additional"), "Additional phenotype information"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Phenotype/Inheritance"]/option[text()="Familial"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create phenotype information entry']")); $element->click(); $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); // Wait for page redirect. $this->waitUntil(WebDriverExpectedCondition::titleContains("View phenotype")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/phenotypes\\/0000000003$/', $this->driver->getCurrentURL())); }
public function testAddVariantLocatedWithinGeneToCMTIndividual() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath('//b[contains(., "A variant that is located within a gene")]')); $element->click(); $element = $this->driver->findElement(WebDriverBy::linkText("GJB1")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&reference=Transcript&geneid=GJB1&target=0000000001$/', $this->driver->getCurrentURL())); $this->uncheck(WebDriverBy::name("ignore_00000001")); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/Exon"), "2"); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/DNA"), "c.34G>T"); $element = $this->driver->findElement(WebDriverBy::cssSelector("button.mapVariant")); $element->click(); // Wait until RNA description field is filled after AJAX request. $firstRNAInputSelector = '(//input[contains(@name, "VariantOnTranscript/RNA")])[1]'; $this->waitUntil(function ($driver) use($firstRNAInputSelector) { $firstRNAInput = $driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); return !empty($firstRNAValue); }); // Check RNA description for first transcript. $firstRNAInput = $this->driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); $this->assertTrue((bool) preg_match('/^r\\.\\([\\s\\S]\\)$/', $firstRNAValue)); // Check protein description for first transcript. $firstProteinInputSelector = '(//input[contains(@name, "VariantOnTranscript/Protein")])[1]'; $firstProteinInput = $this->driver->findElement(WebDriverBy::xpath($firstProteinInputSelector)); $firstProteinValue = $firstProteinInput->getAttribute('value'); $this->assertEquals("p.(Gly12Cys)", $firstProteinValue); $GenomicDNAChange = $this->driver->findElement(WebDriverBy::name('VariantOnGenome/DNA')); $this->assertEquals("g.70443591G>T", $GenomicDNAChange->getAttribute('value')); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Maternal (confirmed)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); // Move mouse to let browser hide tooltip of pubmed link (needed for chrome) $this->driver->getMouse()->mouseMove(null, 200, 200); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "0.003"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); $this->assertEquals("Successfully created the variant entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testCreateAnnouncementReadOnly() { // Create an announcement, that switches LOVD into the read-only state. // This test assumes you're logged in as manager or admin. $sAnnouncement = 'This is a test announcement. LOVD will be closed for registrations, and lower level users can not log in.'; $this->driver->get(ROOT_URL . '/src/announcements?create'); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/announcements[\\s\\S]create$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="type"]/option[text()="Warning"]')); $option->click(); $this->enterValue(WebDriverBy::name('announcement'), $sAnnouncement); $this->enterValue(WebDriverBy::name('start_date'), ''); // No value, means active from now(). $this->enterValue(WebDriverBy::name('end_date'), ''); // No value, means active until '9999-12-31 23:59:59'. $this->check(WebDriverBy::name('lovd_read_only')); $this->enterValue(WebDriverBy::name('password'), 'test1234'); $element = $this->driver->findElement(WebDriverBy::xpath('//input[@value="Create announcement"]')); $element->click(); $this->driver->findElement(WebDriverBy::xpath('//td[text()="Successfully created the announcement!"]')); // Finds any TD with this text. // Also check if announcement is actually visible. $this->assertEquals($sAnnouncement, $this->driver->findElement(WebDriverBy::cssSelector('table[class=info]'))->getText()); // Wait for redirect... $this->waitUntil(WebDriverExpectedCondition::titleContains('View announcement')); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/announcements\\/\\d{5}$/', $this->driver->getCurrentURL())); }
public function testCheckCustomLinks() { // This test checks some basic functionality of the custom links. It // doesn't require authorization, just checks some VLs if the links are // rendered correctly. // Load the common variant overview. $this->driver->get(ROOT_URL . '/src/variants'); // Find a custom link, and move the mouse over it. $oCustomLink = $this->driver->findElement(WebDriverBy::xpath('//table[@class="data"]/tbody/tr/td/span[text()="dbSNP"]')); $this->driver->getMouse()->mouseMove($oCustomLink->getCoordinates()); // Now find the tooltip that should have shown. $sToolTipLinkText = $this->driver->findElement(WebDriverBy::xpath('//div[@id="tooltip"]/a'))->getText(); $this->assertTrue(strpos($sToolTipLinkText, 'http') === 0 && strpos($sToolTipLinkText, 'SNP')); // This test data does not have many links, try and find a PubMed link. // Load the in_gene view. $this->driver->get(ROOT_URL . '/src/variants/in_gene'); // Filter on Reference, so we can find this link on the first page. $sSelector = WebDriverBy::name('search_VariantOnGenome/Reference'); $this->enterValue($sSelector, 'Fokkema'); $oElement = $this->driver->findElement($sSelector); // Use json_decode to send enter key to browser. $oElement->sendKeys(json_decode('"\\uE007"')); // FIXME: It would be good if we can test for the VL to renew. Now just waiting a second. sleep(1); // Find a custom link, and move the mouse over it. $oCustomLink = $this->driver->findElement(WebDriverBy::xpath('//table[@class="data"]/tbody/tr/td/span[text()="Fokkema et al (2011)"]')); $this->driver->getMouse()->mouseMove($oCustomLink->getCoordinates()); // Now find the tooltip that should have shown. $sToolTipLinkText = $this->driver->findElement(WebDriverBy::xpath('//div[@id="tooltip"]/a'))->getText(); $this->assertTrue(strpos($sToolTipLinkText, 'http') === 0 && strpos($sToolTipLinkText, 'pubmed')); }
public function testCreateIndividualDiagnosedWithCMT() { $element = $this->driver->findElement(WebDriverBy::id("tab_submit")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals[\\s\\S]create$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("Individual/Lab_ID"), "12345CMT"); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); // Move mouse to let browser hide tooltip of pubmed link (needed for chrome) $this->driver->getMouse()->mouseMove(null, 200, 200); $this->enterValue(WebDriverBy::name("Individual/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("Individual/Remarks"), "No Remarks"); $this->enterValue(WebDriverBy::name("Individual/Remarks_Non_Public"), "Still no remarks"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="active_diseases[]"]/option[text()="CMT (Charcot Marie Tooth Disease)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create individual information entry']")); $element->click(); $this->assertEquals("Successfully created the individual information entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testAddScreeningToCMTIndividual() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/individual\\/00000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings[\\s\\S]create&target=00000001$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="RNA (cDNA)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="Protein"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for Comparative Genomic Hybridisation"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for resequencing"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="array for SNP typing"]')); $option->click(); // $this->addSelection(WebDriverBy::name("genes[]"), "value=GJB1"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genes[]"]/option[@value="GJB1"]')); $option->click(); $this->check(WebDriverBy::name("variants_found")); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create screening information entry']")); $element->click(); $this->assertEquals("Successfully created the screening entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
/** * Получить токен для полного доступа * @param $url string * @param $recursion bool */ public function getToken($url, $recursion = true) { $this->driver->get($url); $this->driver->findElement(WebDriverBy::name('email'))->sendKeys($this->login); $this->driver->findElement(WebDriverBy::name('pass'))->sendKeys($this->password); $this->driver->findElement(WebDriverBy::id('install_allow'))->click(); sleep(3); while ($this->driver->findElements(WebDriverBy::xpath('//input[@name=\'captcha_key\']'))) { $this->captcha(); $this->driver->findElement(WebDriverBy::name('pass'))->sendKeys($this->password); $this->driver->findElement(WebDriverBy::id('install_allow'))->click(); sleep(3); } $this->driver->wait(60, 1000)->until(WebDriverExpectedCondition::titleContains('VK | Request Access')); $this->driver->findElement(WebDriverBy::id('install_allow'))->click(); $this->driver->wait(60, 1000)->until(WebDriverExpectedCondition::titleContains('OAuth Blank')); $urlCurrent = $this->driver->getCurrentURL(); $parseUrl = parse_url($urlCurrent); if (!isset($parseUrl['fragment']) && $recursion == true) { return $this->getToken($url, false); } $query = $parseUrl['fragment']; parse_str($query, $data); return $data; }
public function testAddVariantOnlyDescribedOnGenomicLevelToIVAIndividual() { // wait for page redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//table[2]/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&reference=Genome&target=0000000002$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Paternal (confirmed)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="chromosome"]/option[text()="15"]')); $option->click(); $this->enterValue(WebDriverBy::name("VariantOnGenome/DNA"), "g.40702876G>T"); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); // Move mouse to let browser hide tooltip of pubmed link (needed for chrome) $this->driver->getMouse()->mouseMove(null, 200, 200); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "11/10000"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); $this->assertEquals("Successfully created the variant entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testPostFinishAddPhenotypeInfoToCMTIndividual() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000003$/', $this->driver->getCurrentURL())); // Move mouse to Individuals tab and click 'view all individuals' option. $tabElement = $this->driver->findElement(WebDriverBy::id("tab_individuals")); $this->driver->getMouse()->mouseMove($tabElement->getCoordinates()); $allIndividualsLink = $this->driver->findElement(WebDriverBy::partialLinkText('View all individuals')); $allIndividualsLink->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::cssSelector("td.ordered")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals\\/00000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::id("viewentryOptionsButton_Individuals")); $element->click(); $element = $this->driver->findElement(WebDriverBy::linkText("Add phenotype information to individual")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/phenotypes[\\s\\S]create&target=00000001$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("Phenotype/Additional"), "Additional phenotype information"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Phenotype/Inheritance"]/option[text()="Familial"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create phenotype information entry']")); $element->click(); $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("View phenotype")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/phenotypes\\/0000000002$/', $this->driver->getCurrentURL())); }
public function testAddVariantLocatedWithinGeneToHealthyIndividual() { // wait for page redirect $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b"))); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath('//b[contains(., "A variant that is located within a gene")]')); // $element = $this->driver->findElement(WebDriverBy::xpath("//table[2]/tbody/tr/td[2]/b")); $element->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[@id='IVD']/td[2]")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&reference=Transcript&geneid=IVD&target=0000000001$/', $this->driver->getCurrentURL())); $this->uncheck(WebDriverBy::name("ignore_00000001")); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/Exon"), "2"); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/DNA"), "c.456T>G"); $element = $this->driver->findElement(WebDriverBy::cssSelector("button.mapVariant")); $element->click(); // Wait until RNA description field is filled after AJAX request. $firstRNAInputSelector = '(//input[contains(@name, "VariantOnTranscript/RNA")])[1]'; $this->waitUntil(function ($driver) use($firstRNAInputSelector) { $firstRNAInput = $driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); return !empty($firstRNAValue); }); // Check RNA description. $firstRNAInput = $this->driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); $this->assertTrue((bool) preg_match('/^r\\.\\([\\s\\S]\\)$/', $firstRNAValue)); // Check protein description. $firstProteinInputSelector = '(//input[contains(@name, "VariantOnTranscript/Protein")])[1]'; $firstProteinInput = $this->driver->findElement(WebDriverBy::xpath($firstProteinInputSelector)); $firstProteinValue = $firstProteinInput->getAttribute('value'); $this->assertRegExp('/^p\\.\\(Tyr152[\\s\\S]*\\)$/', $firstProteinValue); $GenomicDNAChange = $this->driver->findElement(WebDriverBy::name('VariantOnGenome/DNA')); $this->assertEquals("g.40702987T>G", $GenomicDNAChange->getAttribute('value')); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Paternal (confirmed)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "0.05"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); $this->assertEquals("Successfully created the variant entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testAccessSharingSubmitter() { $aUserRecords = CreateUsersSubmitterTest::userRecords(); if (count($aUserRecords) < 2) { $this->fail('Cannot run test because CreateUsersSubmitterTest::userRecords() returned too few records.'); } // Example record: array('Test Submitter1', '*****@*****.**', 'testsubmitter1', // 'testsubmitter1') list($sSubName1, $sSubEmail1, $sSubUsername1, $sSubPass1) = $aUserRecords[0]; list($sSubName2, $sSubEmail2, $sSubUsername2, $sSubPass2) = $aUserRecords[1]; $this->logout(); $this->login($sSubUsername1, $sSubPass1); // Create individual as first submitter. $this->driver->get(ROOT_URL . "/src/individuals?create"); $this->enterValue(WebDriverBy::name("Individual/Lab_ID"), "dummy"); $createButton = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create individual information entry']")); $createButton->click(); $this->waitUntil(WebDriverExpectedCondition::titleContains('Submission of')); $header = $this->driver->findElement(WebDriverBy::xpath('//h2[@class="LOVD"]')); $sIndividualID = substr($header->getText(), -8); $this->logout(); $this->login($sSubUsername2, $sSubPass2); // Try (unsuccessfully) to access individual. $this->driver->get(ROOT_URL . '/src/individuals/' . $sIndividualID); $infoBox = $this->driver->findElement(WebDriverBy::xpath('//table[@class="info"]/tbody/tr/td[@valign="middle"]')); $this->assertEquals($infoBox->getText(), 'No such ID!'); $this->logout(); $this->login($sSubUsername1, $sSubPass1); // Open access sharing page $yourAccountLink = $this->driver->findElement(WebDriverBy::xpath('//a/b[text()="Your account"]')); $yourAccountLink->click(); $sMenuSelector = '//img[@id="viewentryOptionsButton_Users"]'; $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath($sMenuSelector))); $optionsMenu = $this->driver->findElement(WebDriverBy::xpath($sMenuSelector)); $optionsMenu->click(); $sMenuItemSelector = '//a[text()="Share access to your entries with other users"]'; $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath($sMenuItemSelector))); $shareAccessItem = $this->driver->findElement(WebDriverBy::xpath($sMenuItemSelector)); $shareAccessItem->click(); // Share access with other submitter. $sUserSelector = '//a[text()="' . $sSubName2 . '"]'; $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath($sUserSelector))); $userRow = $this->driver->findElement(WebDriverBy::xpath($sUserSelector)); $userRow->click(); $this->enterValue(WebDriverBy::xpath('//td/input[@type="password"]'), $sSubPass1); $saveButton = $this->driver->findElement(WebDriverBy::xpath('//input[@value="Save access permissions"]')); $saveButton->click(); $this->logout(); $this->login($sSubUsername2, $sSubPass2); // Try (successfully) to access individual. $this->driver->get(ROOT_URL . '/src/individuals/' . $sIndividualID); $header = $this->driver->findElement(WebDriverBy::xpath('//h2[@class="LOVD"]')); $this->assertEquals($header->getText(), 'View individual #' . $sIndividualID); $nonpubFieldHead = $this->driver->findElement(WebDriverBy::xpath('//table[@class="data"]/tbody/tr[4]/th')); $this->assertEquals($nonpubFieldHead->getText(), 'Remarks (non public)'); }
public function testUpdatetImport() { $this->driver->get(ROOT_URL . "/src/import"); $this->enterValue(WebDriverBy::name("import"), ROOT_PATH . "../tests/test_data_files/UpdateImport.txt"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="mode"]/option[text()="Update existing data (in beta)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Import file']")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*The following sections are modified and updated in the database: Columns, Diseases, Individuals, Phenotypes, Screenings, Variants_On_Genome, Variants_On_Transcripts\\.$/', $this->driver->findElement(WebDriverBy::id("lovd_sql_progress_message_done"))->getText())); }
public function testSecondInsertImport() { $this->driver->get(ROOT_URL . "/src/import"); $this->enterValue(WebDriverBy::name("import"), ROOT_PATH . "../tests/test_data_files/SecondInsertImport.txt"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="mode"]/option[text()="Add only, treat all data as new"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Import file']")); $element->click(); $this->assertEquals("Done importing!", $this->driver->findElement(WebDriverBy::id("lovd_sql_progress_message_done"))->getText()); }
public function testCreateGenderColumn() { $this->driver->get(ROOT_URL . "/src/columns/Individual/Gender"); $element = $this->driver->findElement(WebDriverBy::id("viewentryOptionsButton_Columns")); $element->click(); $element = $this->driver->findElement(WebDriverBy::linkText("Enable column")); $element->click(); $this->enterValue(WebDriverBy::name("password"), "test1234"); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Add/enable custom data column Individual/Gender']")); $element->click(); }
public function testMyTestCase() { $this->driver->get(ROOT_URL . "/src/phenotypes?create&target=00000001"); $this->enterValue(WebDriverBy::name("Phenotype/Additional"), "Phenotype Details"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Phenotype/Inheritance"]/option[text()="Unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="Test Owner (#00006)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create phenotype information entry']")); $element->click(); $this->assertEquals("Successfully created the phenotype entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testCreateDiseaseIVA() { $this->driver->get(ROOT_URL . "/src/diseases?create"); $this->enterValue(WebDriverBy::name("symbol"), "IVA"); $this->enterValue(WebDriverBy::name("name"), "isovaleric acidemia"); $this->enterValue(WebDriverBy::name("id_omim"), "243500"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genes[]"]/option[text()="IVD (isovaleryl-CoA dehydrogenase)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create disease information entry']")); $element->click(); $this->assertEquals("Successfully created the disease information entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testPostFinishAddVariantOnlyDescribedOnGenomicLevelToCMT() { $this->logout(); $this->login('collaborator', 'test1234'); $this->driver->get(ROOT_URL . "/src/"); // Move mouse to Screenings tab and click 'view all screenings' option. $tabElement = $this->driver->findElement(WebDriverBy::id("tab_screenings")); $this->driver->getMouse()->mouseMove($tabElement->getCoordinates()); $allVariantsLink = $this->driver->findElement(WebDriverBy::partialLinkText('View all screenings')); $allVariantsLink->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings$/', $this->driver->getCurrentURL())); // $element = $this->driver->findElement(WebDriverBy::cssSelector("#0000000002 > td.ordered")); $element = $this->driver->findElement(WebDriverBy::xpath("//td[text()='0000000002']")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings\\/0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::id("viewentryOptionsButton_Screenings")); $element->click(); $element = $this->driver->findElement(WebDriverBy::linkText("Add variant to screening")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//table[2]/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&reference=Genome&target=0000000002$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Maternal (confirmed)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="chromosome"]/option[text()="X"]')); $option->click(); $this->enterValue(WebDriverBy::name("VariantOnGenome/DNA"), "g.40702876G>T"); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); // Move mouse to let browser hide tooltip of pubmed link (needed for chrome) $this->driver->getMouse()->mouseMove(null, 200, 200); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "11/10000"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); for ($second = 0;; $second++) { if ($second >= 60) { $this->fail("timeout"); } try { if ($this->isElementPresent(WebDriverBy::cssSelector("table[class=info]"))) { break; } } catch (Exception $e) { } sleep(1); } $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); }
public function testUninstallLOVDTest() { $this->logout(); $this->login('admin', 'test1234'); $this->driver->get(ROOT_URL . "/src/uninstall"); $this->enterValue(WebDriverBy::name("password"), "test1234"); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Next >>']")); $element->click(); $this->enterValue(WebDriverBy::name("password"), "test1234"); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Uninstall LOVD']")); $element->click(); $this->assertEquals("LOVD successfully uninstalled!\nThank you for having used LOVD!", $this->driver->findElement(WebDriverBy::cssSelector("div[id=lovd__progress_message]"))->getText()); }
public function testAddVCFFileToCMTIndividual() { $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*Are you sure you are done with submitting the variants found with this screening[\\s\\S][\\s\\S]*$/', $this->getConfirmation())); $this->chooseOkOnNextConfirmation(); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[3]/td[2]/b")); $element->click(); // $element = $this->driver->findElement(WebDriverBy::cssSelector("#0000000002 > td.ordered")); $element = $this->driver->findElement(WebDriverBy::xpath("//td[text()='0000000002']")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[3]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create&target=0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create&type=VCF&target=0000000002$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("variant_file"), ROOT_PATH . "../tests/test_data_files/ShortVCFfilev1.vcf"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="hg_build"]/option[text()="hg19"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="dbSNP_column"]/option[text()="VariantOnGenome/Reference"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genotype_field"]/option[text()="Use Phred-scaled genotype likelihoods (PL)"]')); $option->click(); $this->check(WebDriverBy::name("allow_mapping")); $this->check(WebDriverBy::name("allow_create_genes")); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Upload VCF file']")); $element->click(); $this->assertEquals("25 variants were imported, 1 variant could not be imported.", $this->driver->findElement(WebDriverBy::id("lovd__progress_message"))->getText()); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Continue »']")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000002$/', $this->driver->getCurrentURL())); for ($second = 0;; $second++) { if ($second >= 600) { $this->fail("timeout"); } $this->driver->get(ROOT_URL . "/src/ajax/map_variants.php"); if (strcmp("0 99 There are no variants to map in the database", $this->driver->findElement(WebDriverBy::tagName("body"))->getText())) { break; } $this->assertNotContains("of 25 variants", $this->driver->findElement(WebDriverBy::tagName("body"))->getText()); sleep(1); } }
public function testAddSummaryVariantVCFFile() { // Mouse hover over Submit tab, to make 'submit new data' link visible. $tabElement = $this->driver->findElement(WebDriverBy::xpath("//img[@id='tab_submit']")); $this->driver->getMouse()->mouseMove($tabElement->getCoordinates()); $element = $this->driver->findElement(WebDriverBy::linkText("Submit new data")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*Please reconsider to submit individual data as well, as it makes the data you submit much more valuable![\\s\\S]*$/', $this->getConfirmation())); $this->chooseOkOnNextConfirmation(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[3]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->driver->get(ROOT_URL . "/src/variants/upload?create&type=VCF"); $this->enterValue(WebDriverBy::name("variant_file"), ROOT_PATH . "../tests/test_data_files/ShortVCFfilev1.vcf"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="hg_build"]/option[text()="hg19"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="dbSNP_column"]/option[text()="VariantOnGenome/Reference"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genotype_field"]/option[text()="Use Phred-scaled genotype likelihoods (PL)"]')); $option->click(); $this->check(WebDriverBy::name("allow_mapping")); $this->check(WebDriverBy::name("allow_create_genes")); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Upload VCF file']")); $element->click(); $this->assertEquals("25 variants were imported, 1 variant could not be imported.", $this->driver->findElement(WebDriverBy::id("lovd__progress_message"))->getText()); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Continue »']")); $element->click(); $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); for ($second = 0;; $second++) { if ($second >= 600) { $this->fail("timeout"); } $this->driver->get(ROOT_URL . "/src/ajax/map_variants.php"); if (strcmp("0 99 There are no variants to map in the database", $this->driver->findElement(WebDriverBy::tagName("body"))->getText())) { break; } $this->assertNotContains("of 25 variants", $this->driver->findElement(WebDriverBy::tagName("body"))->getText()); sleep(1); } }
public function testAddSummaryVariantSeattleseqFile() { // Mouse hover over Submit tab, to make 'submit new data' link visible. $tabElement = $this->driver->findElement(WebDriverBy::xpath("//img[@id='tab_submit']")); $this->driver->getMouse()->mouseMove($tabElement->getCoordinates()); $element = $this->driver->findElement(WebDriverBy::linkText("Submit new data")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*Please reconsider to submit individual data as well, as it makes the data you submit much more valuable![\\s\\S]*$/', $this->getConfirmation())); $this->chooseOkOnNextConfirmation(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[3]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create&type=SeattleSeq$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("variant_file"), ROOT_PATH . "../tests/test_data_files/ShortSeattleSeqAnnotation138v1.txt"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="hg_build"]/option[text()="hg19"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="dbSNP_column"]/option[text()="VariantOnGenome/Reference"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="autocreate"]/option[text()="Create genes and transcripts"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Upload SeattleSeq file']")); $this->clickNoTimeout($element); for ($second = 0;; $second++) { if ($second >= 300) { $this->fail("timeout"); } try { if ($this->isElementPresent(WebDriverBy::xpath("//input[@value='Continue »']"))) { break; } } catch (Exception $e) { } sleep(1); } $this->assertContains("138 variants were imported, 1 variant could not be imported.", $this->driver->findElement(WebDriverBy::id("lovd__progress_message"))->getText()); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Continue »']")); $element->click(); $this->assertTrue((bool) preg_match('/^Successfully processed your submission and sent an email notification to the relevant curator[\\s\\S]*$/', $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText())); }
public function testConfirmVariantToCMTIndividual() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*Are you sure you are done with submitting the variants found with this screening[\\s\\S][\\s\\S]*$/', $this->getConfirmation())); $this->chooseOkOnNextConfirmation(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/individual\\/00000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr[2]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings[\\s\\S]create&target=00000001$/', $this->driver->getCurrentURL())); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="RNA (cDNA)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Template[]"]/option[text()="Protein"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="Single Base Extension"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="Single-Strand DNA Conformation polymorphism Analysis (SSCP)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Screening/Technique[]"]/option[text()="SSCA, fluorescent (SSCP)"]')); $option->click(); // $this->addSelection(WebDriverBy::name("genes[]"), "value=GJB1"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genes[]"]/option[@value="GJB1"]')); $option->click(); $this->check(WebDriverBy::name("variants_found")); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin (#00001)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create screening information entry']")); $element->click(); $this->assertEquals("Successfully created the screening entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000002$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/screenings\\/0000000002[\\s\\S]confirmVariants$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::id("check_0000000001")); $element->click(); $this->enterValue(WebDriverBy::xpath("//td/input[@type='password']"), "test1234"); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Save variant list']")); $element->click(); $confirmElementSelector = WebDriverBy::xpath('//td[text()="Successfully confirmed the variant entry!"]'); $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated($confirmElementSelector)); }
public function testAddVCFFileToIVAIndividual() { // wait for page redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/screening\\/0000000003$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants[\\s\\S]create&target=0000000003$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//tr[3]/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create&target=0000000003$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/variants\\/upload[\\s\\S]create&type=VCF&target=0000000003$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("variant_file"), ROOT_PATH . "../tests/test_data_files/ShortVCFfilev1.vcf"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="hg_build"]/option[text()="hg19"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="dbSNP_column"]/option[text()="VariantOnGenome/Reference"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="genotype_field"]/option[text()="Use Phred-scaled genotype likelihoods (PL)"]')); $option->click(); $this->check(WebDriverBy::name("allow_mapping")); $this->check(WebDriverBy::name("allow_create_genes")); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="LOVD3 Admin"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Upload VCF file']")); $element->click(); $this->assertEquals("25 variants were imported, 1 variant could not be imported.", $this->driver->findElement(WebDriverBy::id("lovd__progress_message"))->getText()); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Continue »']")); $element->click(); for ($second = 0;; $second++) { if ($second >= 600) { $this->fail("timeout"); } $this->driver->get(ROOT_URL . "/src/ajax/map_variants.php"); if (strcmp("0 99 There are no variants to map in the database", $this->driver->findElement(WebDriverBy::tagName("body"))->getText())) { break; } $this->assertNotContains("of 25 variants", $this->driver->findElement(WebDriverBy::tagName("body"))->getText()); sleep(1); } // Test whether a variant was parsed correctly via mutalyzer. $this->driver->get(ROOT_URL . '/src/genes/ARSD'); $element = $this->driver->findElement(WebDriverBy::xpath('//tr[@class="data"]/td[text()="X"]')); $element->click(); $this->waitUntil(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xpath('//td[text()="p.(Gln318His)"]'))); }
public function testAddPhenotypeInfoToCMTIndividual() { // Wait for redirect $this->waitUntil(WebDriverExpectedCondition::titleContains("Submission of")); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/submit\\/individual\\/00000001$/', $this->driver->getCurrentURL())); $element = $this->driver->findElement(WebDriverBy::xpath("//div/table/tbody/tr/td/table/tbody/tr/td[2]/b")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/phenotypes[\\s\\S]create&target=00000001$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("Phenotype/Additional"), "Additional phenotype information"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="Phenotype/Inheritance"]/option[text()="Familial"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create phenotype information entry']")); $element->click(); $this->assertEquals("Successfully created the phenotype entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
public function testAddVariantLocatedWithinGeneToIVAIndividual() { $this->driver->get(ROOT_URL . "/src/variants?create&reference=Transcript&geneid=IVD&target=0000000001"); $this->uncheck(WebDriverBy::name("ignore_00000001")); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/Exon"), "2"); $this->enterValue(WebDriverBy::name("00000001_VariantOnTranscript/DNA"), "c.345G>T"); $element = $this->driver->findElement(WebDriverBy::cssSelector("button.mapVariant")); $element->click(); // Wait until RNA description field is filled after AJAX request. $firstRNAInputSelector = '(//input[contains(@name, "VariantOnTranscript/RNA")])[1]'; $this->waitUntil(function ($driver) use($firstRNAInputSelector) { $firstRNAInput = $driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); return !empty($firstRNAValue); }); // Check RNA description for first transcript. $firstRNAInput = $this->driver->findElement(WebDriverBy::xpath($firstRNAInputSelector)); $firstRNAValue = $firstRNAInput->getAttribute('value'); $this->assertTrue((bool) preg_match('/^r\\.\\([\\s\\S]\\)$/', $firstRNAValue)); // Check protein description for first transcript. $firstProteinInputSelector = '(//input[contains(@name, "VariantOnTranscript/Protein")])[1]'; $firstProteinInput = $this->driver->findElement(WebDriverBy::xpath($firstProteinInputSelector)); $firstProteinValue = $firstProteinInput->getAttribute('value'); $this->assertEquals("p.(Met115Ile)", $firstProteinValue); $GenomicDNAChange = $this->driver->findElement(WebDriverBy::name('VariantOnGenome/DNA')); $this->assertEquals("g.40702876G>T", $GenomicDNAChange->getAttribute('value')); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="00000001_effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="allele"]/option[text()="Paternal (confirmed)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); $this->enterValue(WebDriverBy::name("VariantOnGenome/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("VariantOnGenome/Frequency"), "0.05"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_reported"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="effect_concluded"]/option[text()="Effect unknown"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="owned_by"]/option[text()="Test Owner (#00006)"]')); $option->click(); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="statusid"]/option[text()="Public"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create variant entry']")); $element->click(); $this->assertEquals("Successfully created the variant entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }
private function captcha() { $path = \Yii::getAlias('@runtime/tmp') . '/' . time() . '_' . rand() . '.png'; $this->driver->takeScreenshot($path); $coordinates = $this->driver->findElement(WebDriverBy::cssSelector('.captchaImage'))->getCoordinates()->onPage(); if (Image::crop($path, $coordinates->getX(), $coordinates->getY(), 300, 60)) { if (\Yii::$app->get('captcha')->run($path)) { $this->driver->findElement(WebDriverBy::id('CaptchaInput'))->click(); $this->driver->findElement(WebDriverBy::id('CaptchaInput'))->sendKeys(\Yii::$app->get('captcha')->result()); $this->driver->findElement(WebDriverBy::name('submit_captcha'))->click(); sleep(2); } } else { throw new Exception('Проблема при обрезании картинки'); } }
public function testCreateIndividualDiagnosedWithCMT() { $element = $this->driver->findElement(WebDriverBy::id("tab_submit")); $element->click(); $this->assertTrue((bool) preg_match('/^[\\s\\S]*\\/src\\/individuals[\\s\\S]create$/', $this->driver->getCurrentURL())); $this->enterValue(WebDriverBy::name("Individual/Lab_ID"), "12345CMT"); $element = $this->driver->findElement(WebDriverBy::linkText("PubMed")); $element->click(); $this->enterValue(WebDriverBy::name("Individual/Reference"), "{PMID:Fokkema et al (2011):21520333}"); $this->enterValue(WebDriverBy::name("Individual/Remarks"), "No Remarks"); $option = $this->driver->findElement(WebDriverBy::xpath('//select[@name="active_diseases[]"]/option[text()="CMT (Charcot Marie Tooth Disease)"]')); $option->click(); $element = $this->driver->findElement(WebDriverBy::xpath("//input[@value='Create individual information entry']")); $element->click(); $this->assertEquals("Successfully created the individual information entry!", $this->driver->findElement(WebDriverBy::cssSelector("table[class=info]"))->getText()); }