Merge pull request #5191 from solgenomics/topic/quality_control
[sgn.git] / t / selenium2 / solgs / solgs.t
blob18a6c7680e789c25e1daa80fc16f817e7d4edb9b
2 use strict;
4 use lib 't/lib';
6 use Test::More;
7 use SGN::Test::WWW::WebDriver;
8 use SGN::Test::Fixture;
9 use SGN::Test::solGSData;
10 use Config::Any;
12 my $d = SGN::Test::WWW::WebDriver->new();
13 my $f = SGN::Test::Fixture->new();
15 my $solgs_data = SGN::Test::solGSData->new({'fixture' => $f, 'accessions_list_subset' => 60, 'plots_list_subset' => 60});
16 my $cache_dir = $solgs_data->site_cluster_shared_dir();
17 print STDERR "\nsite_cluster_shared_dir-- $cache_dir\n";
20 my $accessions_list =  $solgs_data->load_accessions_list();
21 my $accessions_list_name = $accessions_list->{list_name};
22 my $accessions_list_id   = 'list_' . $accessions_list->{list_id};
24 my $plots_list =  $solgs_data->load_plots_list();
25 my $plots_list_name = $plots_list->{list_name};
26 my $plots_list_id = 'list_' . $plots_list->{list_id};
28 my $trials_list =  $solgs_data->load_trials_list();
29 my $trials_list_name = $trials_list->{list_name};
30 my $trials_list_id = 'list_' . $trials_list->{list_id};
32 my $trials_dt = $solgs_data->load_trials_dataset();
33 my $trials_dt_name = $trials_dt->{dataset_name};
34 my $trials_dt_id = 'dataset_' . $trials_dt->{dataset_id};
35 my $accessions_dt = $solgs_data->load_accessions_dataset();
36 my $accessions_dt_name = $accessions_dt->{dataset_name};
37 my $accessions_dt_id = 'dataset_' . $accessions_dt->{dataset_id};
39 my $plots_dt = $solgs_data->load_plots_dataset();
40 my $plots_dt_name = $plots_dt->{dataset_name};
41 my $plots_dt_id = 'dataset_' . $plots_dt->{dataset_id};
43 print STDERR "\ntrials dt: $trials_dt_name -- $trials_dt_id\n";
44 print STDERR "\naccessions dt: $accessions_dt_name -- $accessions_dt_id\n";
45 print STDERR "\nplots dt: $plots_dt_name -- $plots_dt_id\n";
47 print STDERR "\ntrials list: $trials_list_name -- $trials_list_id\n";
48 print STDERR "\naccessions list: $accessions_list_name -- $accessions_list_id\n";
49 print STDERR "\nplots list: $plots_list_name -- $plots_list_id\n";
52 `rm -r $cache_dir`;
53 sleep(5);
55 $d->while_logged_in_as("submitter", sub {
56     sleep(2);
57     $d->get('/solgs', 'solgs home page');
58     sleep(4);
59     $d->find_element_ok('trial_search_box', 'id', 'population search form')->send_keys('Kasese solgs trial');
60     sleep(5);
61     $d->find_element_ok('search_trial', 'id', 'search for training pop')->click();
62     sleep(5);
63     $d->find_element_ok('Kasese', 'partial_link_text', 'create training pop')->click();
64     sleep(3);
65     $d->find_element_ok('queue_job', 'id', 'submit job tr pop')->click();
66     sleep(2);
67     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('Test Kasese Tr pop');
68     sleep(2);
69         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
70     sleep(2);
71     $d->find_element_ok('submit_job', 'id', 'submit')->click();
72     sleep(150);
73     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
74     sleep(5);
75     $d->find_element_ok('trial_search_box', 'id', 'population search form')->send_keys('Kasese solgs trial');
76     sleep(5);
77     $d->find_element_ok('search_trial', 'id', 'search for training pop')->click();
78     sleep(5);
79     $d->find_element_ok('Kasese', 'partial_link_text', 'create training pop')->click();
80     sleep(15);
82     $d->find_element_ok('Genotype data', 'partial_link_text',  'download training pop genotype data');
83     sleep(3);
84     $d->find_element_ok('Phenotype data', 'partial_link_text',  'download training pop phenotype data');
85     sleep(3);
86     sleep(3);
87    # #  #trial type training population: single trait modeling
89     $d->find_element_ok('dry matter', 'partial_link_text',  'build model')->click();
90     sleep(3);
91     $d->find_element_ok('queue_job', 'id', 'no job queueing')->click();
92     sleep(2);
93     $d->find_element_ok('analysis_name', 'id', 'no job queueing')->send_keys('Test DMCP model Kasese');
94     sleep(2);
95         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
96     sleep(2);
97     $d->find_element_ok('submit_job', 'id', 'submit')->click();
98     sleep(150);
99     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
100     sleep(7);
102     $d->find_element_ok('dry matter', 'partial_link_text',  'build model')->click();
103     sleep(15);
104     
105     my $sel_pred = $d->find_element('Model accuracy statistics', 'partial_link_text', 'scroll to accuracy');
106     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
107     sleep(2);
108     $d->find_element_ok('Download model accuracy', 'partial_link_text',  'download accuracy');
109     sleep(3);
111     my $sel_pred = $d->find_element('GEBVs vs observed', 'partial_link_text', 'scroll to GEBvs');
112     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-200);", $sel_pred);
113     sleep(2);
114     $d->find_element_ok('download_gebvs_histo_plot', 'id',  'download gebvs');
115     sleep(3);
117         my $sel_pred = $d->find_element('GEBVs vs observed', 'partial_link_text', 'scroll to GEBvs');
118     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-200);", $sel_pred);
119     sleep(2);
120     $d->find_element_ok('save_gebvs', 'id',  'store gebvs')->click();
121     sleep(150);
122         $d->find_element_ok('View stored GEBVs', 'partial_link_text',  'view store gebvs')->click();
123     sleep(20);
125     $d->driver->go_back();
126     sleep(15);
128     my $sel_pred = $d->find_element('Marker effects', 'partial_link_text', 'scroll to marker effects');
129     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-200);", $sel_pred);
130     sleep(2);
131     $d->find_element_ok('Marker effects', 'partial_link_text', 'expand marker effects')->click();
132     sleep(2);
133     $d->find_element_ok('Download marker', 'partial_link_text',  'download marker effects');
134     sleep(3);
136     my $download = $d->find_element('Download data', 'partial_link_text', 'download model data section');
137     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $download);
138     sleep(2);
139     $d->find_element_ok('Genotype data', 'partial_link_text',  'download model genotype data');
140     sleep(3);
141     $d->find_element_ok('Phenotype data', 'partial_link_text',  'download model phenotype data');
142     sleep(3);
143     $d->find_element_ok('Analysis log', 'partial_link_text',  'download analysis log');
144     sleep(3);
145     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
146     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
147     sleep(2);
148     $d->find_element_ok('trial_search_box', 'id', 'population search form')->send_keys('trial2 NaCRRI');
149     sleep(2);
150     $d->find_element_ok('search_selection_pop', 'id', 'search for selection pop')->click();
151     sleep(30);
152     $d->find_element_ok('//table[@id="selection_pops_table"]//*[contains(text(), "Predict")]', 'xpath', 'click training pop')->click();
153     sleep(5);
154     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
155     sleep(2);
156     $d->find_element_ok('analysis_name', 'id', 'fill in selection prediction job name')->send_keys('Test DMCP selection pred nacrri');
157     sleep(2);
158         $d->find_element_ok('user_email', 'id', 'fill user email')->send_keys('email@email.com');
159     sleep(2);
160     $d->find_element_ok('submit_job', 'id', 'submit')->click();
161     sleep(180);
162     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
163     sleep(3);
165     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
166     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
167     sleep(8);
168     $d->find_element_ok('DMCP', 'partial_link_text', 'go back')->click();
169     sleep(5);
170     
171     my $sel_pred = $d->find_element('Expected genetic gain', 'partial_link_text', 'scroll to GEBvs');
172     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-100);", $sel_pred);
173     sleep(2);
174     $d->find_element_ok('check_genetic_gain', 'id',  'run plot genetic gain')->click();
175     sleep(20);
176     $d->find_element_ok('boxplot', 'partial_link_text',  'checkout boxplot download link');
177     sleep(2);
179     $d->driver->refresh();
180     sleep(3);
182         my $sel_pred = $d->find_element('Expected genetic gain', 'partial_link_text', 'scroll to GEBvs');
183     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-100);", $sel_pred);
184     sleep(2);
185     $d->find_element_ok('Genotype data', 'partial_link_text',  'download selection pop genotype data');
186     sleep(3);
187     $d->find_element_ok('Analysis log', 'partial_link_text',  'download analysis log');
188     sleep(3);
189     $d->find_element_ok('save_gebvs', 'id',  'store gebvs')->click();
190     sleep(150);
191         $d->find_element_ok('View stored GEBVs', 'partial_link_text',  'view store gebvs')->click();
192     sleep(20);
193     
194     $d->driver->go_back();
195     sleep(15);
197     $d->driver->go_back();
198     sleep(5);
200     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
201     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
202     sleep(5);
203     $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'accessions list sel pred')->click();
204     sleep(5);
205     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
206     sleep(2);
207     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('accessions list sel pred');
208     sleep(2);
209         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
210     sleep(2);
211     $d->find_element_ok('submit_job', 'id', 'submit')->click();
212     sleep(150);
214     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
215     sleep(5);
217     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
218     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
219     sleep(10);
220      $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'accessions list sel pred')->click();
221     sleep(5);
222     $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "DMCP")]', 'xpath', 'click list sel pred')->click();
223     sleep(10);
225         my $sel_pred = $d->find_element('Expected genetic gain', 'partial_link_text', 'scroll to GEBvs');
226     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-100);", $sel_pred);
227     sleep(2);
228     $d->find_element_ok('save_gebvs', 'id',  'store gebvs')->click();
229     sleep(80);
230         $d->find_element_ok('View stored GEBVs', 'partial_link_text',  'view store gebvs')->click();
231     sleep(20);
233     $d->driver->go_back();
234     sleep(15);
236     $d->driver->go_back();
237     sleep(5);
239 #####################
240         # $d->get('/solgs/trait/70741/population/139/gp/1');
241         # sleep(5);
242 #####################
244     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
245     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
246     sleep(12);
247     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'click list sel pred')->click();
248     sleep(2);
249     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
250     sleep(2);
251     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('dataset clones sel pred');
252     sleep(2);
253         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
254     sleep(2);
255     $d->find_element_ok('submit_job', 'id', 'submit')->click();
256     sleep(150);
257     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
258     sleep(5);
260     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
261     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
262     sleep(5);
263     
264     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'click list sel pred')->click();
265     sleep(5);
266     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "DMCP")]', 'xpath', 'click list sel pred')->click();
267     sleep(5);
269         my $sel_pred = $d->find_element('Expected genetic gain', 'partial_link_text', 'scroll to GEBvs');
270         my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-100);", $sel_pred);
271         sleep(2);
272         $d->find_element_ok('save_gebvs', 'id',  'store gebvs')->click();
273         sleep(80);
274         $d->find_element_ok('View stored GEBVs', 'partial_link_text',  'view store gebvs')->click();
275         sleep(20);
277         $d->driver->go_back();
278         sleep(15);
280     $d->driver->refresh();
281     sleep(3);
283       $d->find_element_ok('Kasese solgs trial', 'partial_link_text', 'back to model page')->click();
284     sleep(5);
285         $d->find_element_ok('Kasese solgs trial', 'partial_link_text', 'back to training pop page')->click();
286         sleep(5);
288     $d->find_element_ok('//table[@id="population_traits_list"]/tbody/tr[1]/td/input', 'xpath', 'select 1st trait')->click();
289     $d->find_element_ok('//table[@id="population_traits_list"]/tbody/tr[2]/td/input', 'xpath', 'select 2nd trait')->click();
290     $d->find_element_ok('runGS', 'id',  'build multi models')->click();
291     sleep(3);
292     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
293     sleep(2);
294     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('Test DMCP-FRW modeling  Kasese');
295     sleep(2);
296         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
297     sleep(2);
298     $d->find_element_ok('submit_job', 'id', 'submit')->click();
299     sleep(150);
300     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
301     sleep(3);
303 #####################
304         # $d->get('/solgs/population/139/gp/1');
305         # sleep(5);
306 #####################
308     $d->find_element_ok('//table[@id="population_traits_list"]/tbody/tr[1]/td/input', 'xpath', 'select 1st trait')->click();
309     sleep(1);
310     $d->find_element_ok('//table[@id="population_traits_list"]/tbody/tr[2]/td/input', 'xpath', 'select 2nd trait')->click();
311     sleep(1);
312     $d->find_element_ok('runGS', 'id',  'build multi models')->click();
313     sleep(5);
316     $d->find_element_ok('trial_search_box', 'id', 'population search form')->send_keys('trial2 NaCRRI');
317     sleep(2);
318     $d->find_element_ok('search_selection_pop', 'id', 'search for selection pop')->click();
319     sleep(5);
320     $d->find_element_ok('//table[@id="selection_pops_table"]//*[contains(text(), "Predict")]', 'xpath', 'click training pop')->click();
321     sleep(5);
322     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
323     sleep(2);
324     $d->find_element_ok('analysis_name', 'id', 'fill in job name')->send_keys('Test DMCP-FRW selection pred naccri');
325     sleep(2);
326         $d->find_element_ok('user_email', 'id', 'fill in user email')->send_keys('email@email.com');
327     sleep(2);
328     $d->find_element_ok('submit_job', 'id', 'submit')->click();
329     sleep(250);
330     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
331     sleep(5);
332     $d->find_element_ok('//table[@id="selection_pops_table"]//*[contains(text(), "FRW")]', 'xpath', 'check multi traits selection prediction ')->click();
333     sleep(5);
335     $d->driver->go_back();
336     sleep(6);
338     my $sel_pred = $d->find_element('Expected genetic gain', 'partial_link_text', 'scroll to GEBvs');
339     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-100);", $sel_pred);
340     sleep(2);
341     $d->find_element_ok('gg_pops_select', 'id', 'select list sl pop')->click();
342     sleep(3);
343     $d->find_element_ok('//select[@id="gg_pops_select"]/option[text()="trial2 NaCRRI"]', 'xpath', 'select selection pop')->click();
344     sleep(3);
345     $d->find_element_ok('check_genetic_gain', 'id',  'run plot genetic gain')->click();
346     sleep(40);
347     $d->find_element_ok('boxplot', 'partial_link_text',  'check multi traits  boxplot download link');
348     sleep(2);
350     $d->driver->refresh();
351     sleep(3);
353     $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'click list sel pred')->click();
354     sleep(5);
355     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
356     sleep(2);
357     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('clones list dmc-frw sel pred');
358     sleep(2);
359         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
360     sleep(2);
361     $d->find_element_ok('submit_job', 'id', 'submit')->click();
362     sleep(250);
363     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
364     sleep(2);
365     $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'click list sel pred')->click();
366     sleep(5);
367     $d->find_element_ok('//tr[@id="' . $accessions_list_id .'"]//*[contains(text(), "FRW")]', 'xpath', 'click list sel pred')->click();
368     sleep(5);
370     $d->driver->go_back();
371     sleep(5);
373     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'click list sel pred')->click();
374     sleep(5);
375     $d->find_element_ok('queue_job', 'id', 'job queueing')->click();
376     sleep(2);
377     $d->find_element_ok('analysis_name', 'id', 'job queueing')->send_keys('dataset clones sel pred2');
378     sleep(2);
379         $d->find_element_ok('user_email', 'id', 'user email')->send_keys('email@email.com');
380     sleep(2);
381     $d->find_element_ok('submit_job', 'id', 'submit')->click();
382     sleep(250);
383     $d->find_element_ok('Go back', 'partial_link_text', 'go back')->click();
384     sleep(3);
386     my $sel_pred = $d->find_element('Predict', 'partial_link_text', 'scroll to selection pred');
387     my $elem = $d->driver->execute_script( "arguments[0].scrollIntoView(true);window.scrollBy(0,-70);", $sel_pred);
388     sleep(5);
389     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "Predict")]', 'xpath', 'dataset dmcp-frw pred')->click();
390     $d->find_element_ok('//tr[@id="' . $accessions_dt_id .'"]//*[contains(text(), "FRW")]', 'xpath', 'dataset dmcp-frw pred')->click();
391     sleep(10);
393     foreach my $list_id ($trials_list_id, $accessions_list_id, $plots_list_id) {
394         $list_id =~ s/\w+_//g;
395         $solgs_data->delete_list($list_id);
396     }
398     foreach my $dataset_id ($trials_dt_id, $accessions_dt_id, $plots_dt_id) {
399         $dataset_id =~ s/\w+_//g;
400         $solgs_data->delete_dataset($dataset_id);
401     }
410 done_testing();