6 Bweb - A Bacula web interface
7 Bacula® - The Network Backup Solution
9 Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
11 The main author of Bweb is Eric Bollengier.
12 The main author of Bacula is Kern Sibbald, with contributions from
13 many others, a complete list can be found in the file AUTHORS.
15 This program is Free Software; you can redistribute it and/or
16 modify it under the terms of version two of the GNU General Public
17 License as published by the Free Software Foundation plus additions
18 that are listed in the file LICENSE.
20 This program is distributed in the hope that it will be useful, but
21 WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 General Public License for more details.
25 You should have received a copy of the GNU General Public License
26 along with this program; if not, write to the Free Software
27 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
30 Bacula® is a registered trademark of Kern Sibbald.
31 The licensor of Bacula is the Free Software Foundation Europe
32 (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zurich,
33 Switzerland, email:ftf@fsfeurope.org.
37 - You need to be in a X session
38 - Install Selenium IDE addon from http://seleniumhq.org/
39 - Install through CPAN WWW::Selenium
40 $ perl -e 'install WWW::Selenium' -MCPAN
41 - Download Selenium RC (remote control) from http://seleniumhq.org/
42 - unzip the archive, and start the Selenium server (require java >= 1.5)
43 $ java -jar selenium-server.jar
45 - run backup-bacula-test
47 $ ./tests/bweb-test.pl
52 use Time::HiRes qw(sleep);
53 use Test::WWW::Selenium;
54 use Test::More "no_plan";
57 use scripts::functions;
58 use File::Copy qw/copy move/;
60 my ($login, $pass, $verbose, %part, @part, $noclean, $client, $multi);
61 my $url = "http://localhost:9180";
62 my @available = qw/client group location run missingjob media overview config/;
64 GetOptions ("login=s" => \$login,
67 "module=s@" => \@part,
68 "verbose" => \$verbose,
69 "nocleanup" => \$noclean,
70 "client=s" => \$client,
74 die "Usage: $0 --url http://.../cgi-bin/bweb/bweb.pl [-m module] [-n]"
78 %part = map { $_ => 1 } @part;
80 %part = map { $_ => 1 } @available;
90 `sed -i 's/# Sched/ Sched/' $conf/bacula-dir.conf`;
94 my $sel = Test::WWW::Selenium->new( host => "localhost",
96 browser => "*firefox",
97 browser_url => $url );
99 $sel->open_ok("/cgi-bin/bweb/bweb.pl?");
100 $sel->set_speed(100);
102 if ($part{multidir}) {
103 # if the current bconsole.conf doesn't contain two sections, we
105 if (!get_resource("$conf/bconsole.conf", "Director", "bweb-dir")) {
106 copy("$conf/bconsole.conf", "$tmp/bconsole.conf.$$");
107 my $r = get_resource("$conf/bconsole.conf", "Director", ".+?");
108 open(FP, ">>$conf/bconsole.conf");
109 $r =~ s/Name = .+$/Name = bweb1-dir/m;
111 $r =~ s/Name = .+$/Name = bweb2-dir/m;
115 $sel->open_ok("/cgi-bin/bweb/bweb.pl");
116 $sel->click_ok("link=Configuration");
117 $sel->wait_for_page_to_load_ok("30000");
118 $sel->is_text_present_ok("Main Configuration");
121 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
122 $sel->wait_for_page_to_load_ok("30000");
123 $sel->is_text_present_ok("Unnamed");
125 $sel->type_ok("name", "MyBweb");
126 $sel->type_ok("new_dir", "bweb1-dir");
128 $sel->type_ok("stat_job_table", "JobHisto");
129 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
130 $sel->wait_for_page_to_load_ok("30000");
131 $sel->is_text_present_ok("MyBweb");
132 $sel->is_text_present_ok("bweb1-dir");
134 $sel->click_ok("link=Main");
135 $sel->wait_for_page_to_load_ok("30000");
136 $sel->is_text_present_ok("Directors");
137 $sel->click_ok("link=MyBweb");
138 $sel->wait_for_page_to_load_ok("30000");
139 $sel->is_text_present_ok("Informations on MyBweb");
144 $sel->click_ok("link=Main");
145 $sel->wait_for_page_to_load_ok("30000");
146 $sel->is_text_present_ok("Running Jobs");
148 $sel->click_ok("link=Clients");
149 $sel->wait_for_page_to_load_ok("30000");
150 $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
152 $sel->click_ok("//input[\@name='client']"); # click the first client
153 $sel->click_ok("//button[\@name='action' and \@value='client_status']");
154 $sel->wait_for_page_to_load_ok("30000");
156 $sel->is_text_present_ok("Command output");
157 $sel->click_ok("link=Clients");
158 $sel->wait_for_page_to_load_ok("30000");
160 $sel->is_text_present_ok("Running Jobs"); # This message is in client status
165 $sel->click_ok("link=Main");
166 $sel->wait_for_page_to_load_ok("30000");
167 $sel->is_text_present_ok("Running Jobs");
169 $sel->click_ok("link=Add Media");
170 $sel->wait_for_page_to_load_ok("30000");
172 $sel->select_ok("pool", "label=Scratch");
173 $sel->select_ok("storage", "label=File");
174 $sel->type_ok("nb", "10");
175 $sel->click_ok("//button[\@name='action']"); # create 10 volumes
176 $sel->wait_for_page_to_load_ok("30000");
180 if (eval { $sel->is_text_present("Select") }) { pass; last WAIT }
185 $sel->click_ok("link=All Media");
186 $sel->wait_for_page_to_load_ok("30000");
188 $sel->is_text_present_ok("Vol0001");
189 $sel->is_text_present_ok("Vol0010");
190 $sel->select_ok("mediatype", "label=File");
191 $sel->select_ok("volstatus", "label=Append");
192 $sel->select_ok("pool", "label=Scratch");
193 $sel->click_ok("//button[\@name='action']");
194 $sel->wait_for_page_to_load_ok("30000");
196 $sel->is_text_present_ok("Vol0001");
197 $sel->click_ok("media");
198 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
199 $sel->wait_for_page_to_load_ok("30000");
201 $sel->select_ok("volstatus", "label=Archive");
202 $sel->select_ok("enabled", "label=no");
203 $sel->click_ok("//button[\@name='action']");
204 $sel->wait_for_page_to_load_ok("30000");
206 $sel->click_ok("arrow_0");
207 $sel->is_text_present_ok("New Volume status is: Archive");
208 $sel->click_ok("link=All Media");
209 $sel->wait_for_page_to_load_ok("30000");
211 $sel->is_text_present_ok("Archive");
212 $sel->select_ok("volstatus", "label=Append");
213 $sel->click_ok("//button[\@name='action']");
214 $sel->wait_for_page_to_load_ok("30000");
216 $sel->click_ok("media");
217 $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
218 $sel->wait_for_page_to_load_ok("30000");
220 $sel->is_text_present_ok("Volume Infos");
222 $sel->click_ok("//button[\@name='action' and \@value='prune']");
223 $sel->wait_for_page_to_load_ok("30000");
224 $sel->is_text_present_ok("The current Volume retention period");
227 $sel->is_text_present_ok("Volume Infos");
228 $sel->click_ok("//button[\@name='action' and \@value='purge']");
229 $sel->wait_for_page_to_load_ok("30000");
231 $sel->is_text_present_ok("Marking it purged");
234 if ($part{missingjob}) {
236 $sel->click_ok("link=Main");
237 $sel->wait_for_page_to_load_ok("30000");
238 $sel->is_text_present_ok("Running Jobs");
240 $sel->click_ok("link=Missing Jobs");
241 $sel->wait_for_page_to_load_ok("30000");
243 $sel->is_text_present_ok("BackupClient1");
244 $sel->is_text_present_ok("BackupCatalog");
245 $sel->click_ok("job");
246 $sel->click_ok("//input[\@name='job' and \@value='BackupCatalog']");
247 $sel->click_ok("//button[\@name='action' and \@value='job']");
248 $sel->wait_for_page_to_load_ok("30000");
250 $sel->body_text_isnt("BackupCatalog");
255 $sel->click_ok("link=Main");
256 $sel->wait_for_page_to_load_ok("30000");
257 $sel->is_text_present_ok("Running Jobs");
259 $sel->click_ok("link=Defined Jobs");
260 $sel->wait_for_page_to_load_ok("30000");
262 $sel->select_ok("job", "label=BackupClient1");
263 $sel->is_text_present_ok("BackupClient1");
264 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
265 $sel->wait_for_page_to_load_ok("30000");
267 $sel->is_text_present_ok("Default");
268 $sel->is_text_present_ok("Full Set");
269 $sel->is_text_present_ok("Incremental");
270 $sel->click_ok("//button[\@name='action']");
271 $sel->wait_for_page_to_load_ok("30000");
275 if (eval { $sel->is_text_present("Start Backup JobId") }) { pass; last WAIT }
280 $sel->is_text_present_ok("Log: BackupClient1 on");
281 $sel->click_ok("//button[\@name='action']");
282 $sel->wait_for_page_to_load_ok("30000");
286 if (eval { $sel->is_text_present("Termination: Backup OK") }) { pass; last WAIT }
291 my $volume = $sel->get_text("//tr[\@id='even_row']/td[12]");
292 $sel->click_ok("//button[\@name='action' and \@value='media']");
293 $sel->wait_for_page_to_load_ok("30000");
295 my $volume_found = $sel->get_text("//tr[\@id='even_row']/td[1]");
296 $sel->click_ok("media");
297 $sel->text_is("//tr[\@id='even_row']/td[5]", "Append");
298 $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
299 $sel->wait_for_page_to_load_ok("30000");
301 $sel->is_text_present_ok("Volume Infos");
302 $sel->click_ok("//img[\@title='terminated normally']");
303 $sel->wait_for_page_to_load_ok("30000");
305 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
306 $sel->wait_for_page_to_load_ok("30000");
308 $sel->is_text_present_ok("FileSet Full Set");
309 $sel->is_text_present_ok("What is included:");
310 $sel->is_text_present_ok("/regress/build");
312 $sel->wait_for_page_to_load_ok("30000");
314 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
315 $sel->wait_for_page_to_load_ok("30000");
317 $sel->is_element_present_ok("level");
318 $sel->selected_value_is("name=level", "Full");
319 $sel->selected_label_is("name=fileset", "Full Set");
320 $sel->selected_label_is("name=job", "BackupClient1");
321 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
322 $sel->wait_for_page_to_load_ok("30000");
324 $sel->is_text_present_ok("FileSet Full Set");
325 $sel->is_text_present_ok("/regress/build");
330 $sel->click_ok("link=Main");
331 $sel->wait_for_page_to_load_ok("30000");
332 $sel->is_text_present_ok("Running Jobs");
334 $sel->click_ok("link=Groups");
335 $sel->wait_for_page_to_load_ok("30000");
337 $sel->text_is("//h1", "Groups");
338 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
339 $sel->wait_for_page_to_load_ok("30000");
341 $sel->type_ok("newgroup", "All");
342 $sel->select_ok("name=client", "index=0");
343 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
344 $sel->wait_for_page_to_load_ok("30000");
346 $sel->is_text_present_ok("All");
347 $sel->click_ok("//input [\@name='client_group' and \@value='All']");
348 $sel->click_ok("//button[3]");
349 $sel->wait_for_page_to_load_ok("30000");
351 $sel->is_text_present_ok("Group: 'All'");
352 $sel->selected_index_is("name=client", "0");
353 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
354 $sel->wait_for_page_to_load_ok("30000");
356 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
357 $sel->click_ok("//button[4]");
358 $sel->wait_for_page_to_load_ok("30000");
360 $sel->click_ok("//input[\@name='client']");
361 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
362 $sel->wait_for_page_to_load_ok("30000");
364 $sel->is_text_present_ok("All");
365 $sel->click_ok("link=Groups");
366 $sel->wait_for_page_to_load_ok("30000");
368 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
369 $sel->wait_for_page_to_load_ok("30000");
371 $sel->type_ok("newgroup", "Empty");
372 $sel->click_ok("//button[\@name='action']");
373 $sel->wait_for_page_to_load_ok("30000");
375 $sel->click_ok("client_group");
376 $sel->is_text_present_ok("Empty");
377 $sel->click_ok("//button[\@name='action' and \@value='client']");
378 $sel->wait_for_page_to_load_ok("30000");
380 $sel->click_ok("//input[\@name='client']");
381 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
382 $sel->wait_for_page_to_load_ok("30000");
384 $sel->click_ok("link=Groups");
385 $sel->wait_for_page_to_load_ok("30000");
387 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
388 $sel->click_ok("//button[\@name='action' and \@value='groups_del']");
389 ok($sel->get_confirmation() =~ /^Do you want to delete this group[\s\S]$/);
390 $sel->click_ok("link=Groups");
391 $sel->wait_for_page_to_load_ok("30000");
393 $sel->click_ok("//button[\@name='action']");
394 $sel->wait_for_page_to_load_ok("30000");
396 $sel->type_ok("newgroup", "Empty");
397 $sel->click_ok("//button[\@name='action']");
398 $sel->wait_for_page_to_load_ok("30000");
400 $sel->is_text_present_ok("Empty");
401 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
402 $sel->click_ok("//button[\@name='action' and \@value='client']");
403 $sel->wait_for_page_to_load_ok("30000");
405 $sel->click_ok("//input[\@name='client']");
406 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
407 $sel->wait_for_page_to_load_ok("30000");
409 ok(not $sel->is_checked("//input[\@name='client_group' and \@value='Empty']"));
411 # click on Statistics -> Groups
412 $sel->click_ok("//ul[\@id='menu']/li[6]/ul/li[3]/a");
413 $sel->wait_for_page_to_load_ok("30000");
415 $sel->is_text_present_ok("All");
416 $sel->is_text_present_ok("Empty");
417 $sel->click_ok("link=Groups");
418 $sel->wait_for_page_to_load_ok("30000");
420 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
421 $sel->click_ok("document.forms[1].elements[4]");
422 $sel->wait_for_page_to_load_ok("30000");
424 $sel->type_ok("newgroup", "EmptyGroup");
425 $sel->click_ok("//button[\@name='action']");
426 $sel->wait_for_page_to_load_ok("30000");
428 $sel->is_text_present_ok("EmptyGroup");
431 if ($part{location}) {
433 $sel->click_ok("link=Main");
434 $sel->wait_for_page_to_load_ok("30000");
435 $sel->is_text_present_ok("Running Jobs");
437 $sel->click_ok("link=Locations");
438 $sel->wait_for_page_to_load_ok("30000");
440 $sel->click_ok("//button[\@name='action' and \@value='location_add']");
441 $sel->wait_for_page_to_load_ok("30000");
443 $sel->type_ok("location", "Bank");
444 $sel->click_ok("//button[\@name='action']"); # save
445 $sel->wait_for_page_to_load_ok("30000");
447 $sel->is_text_present_ok("Bank");
448 $sel->click_ok("location");
449 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
450 $sel->wait_for_page_to_load_ok("30000");
452 $sel->type_ok("cost", "100");
453 $sel->is_text_present_ok("Location: Bank");
454 $sel->click_ok("//button[\@name='action']");
455 $sel->wait_for_page_to_load_ok("30000");
457 $sel->is_text_present_ok("100");
458 $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.png']");
459 $sel->click_ok("location");
460 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
461 $sel->wait_for_page_to_load_ok("30000");
463 $sel->select_ok("enabled", "label=no");
464 $sel->click_ok("//button[\@name='action']");
465 $sel->wait_for_page_to_load_ok("30000");
467 $sel->is_element_present_ok("//img[\@src='/bweb/inflag0.png']");
468 $sel->click_ok("location");
469 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
470 $sel->wait_for_page_to_load_ok("30000");
472 $sel->select_ok("enabled", "label=archived");
473 $sel->click_ok("//button[\@name='action']");
474 $sel->wait_for_page_to_load_ok("30000");
476 $sel->is_element_present_ok("//img[\@src='/bweb/inflag2.png']");
477 $sel->click_ok("location");
478 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
479 $sel->wait_for_page_to_load_ok("30000");
481 $sel->type_ok("newlocation", "Office");
482 $sel->click_ok("//button[\@name='action']");
483 $sel->wait_for_page_to_load_ok("30000");
485 $sel->is_text_present_ok("Office");
486 $sel->click_ok("link=All Media");
487 $sel->wait_for_page_to_load_ok("30000");
489 $sel->click_ok("media");
490 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
491 $sel->wait_for_page_to_load_ok("30000");
493 $sel->select_ok("location", "label=Office");
494 $sel->click_ok("//button[\@name='action']");
495 $sel->wait_for_page_to_load_ok("30000");
497 $sel->selected_value_is("location", "Office");
498 $sel->click_ok("//button[\@name='action' and \@value='media']");
499 $sel->wait_for_page_to_load_ok("30000");
501 $sel->select_ok("location", "label=Office");
502 $sel->click_ok("//button[\@name='action']");
503 $sel->wait_for_page_to_load_ok("30000");
505 $sel->body_text_isnt("Vol0010");
506 $sel->click_ok("link=Locations");
507 $sel->wait_for_page_to_load_ok("30000");
509 $sel->click_ok("location");
510 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
511 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
512 $sel->wait_for_page_to_load_ok("30000");
514 $sel->is_text_present_ok("Sorry, the location must be empty");
515 $sel->click_ok("link=Locations");
516 $sel->wait_for_page_to_load_ok("30000");
518 $sel->click_ok("//button[\@name='action']");
519 $sel->wait_for_page_to_load_ok("30000");
521 $sel->type_ok("location", "OtherPlace");
522 $sel->click_ok("//button[\@name='action']");
523 $sel->wait_for_page_to_load_ok("30000");
525 $sel->click_ok("location");
526 $sel->click_ok("//button[\@name='action' and \@value='media']");
527 $sel->wait_for_page_to_load_ok("30000");
529 $sel->click_ok("media");
530 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
531 $sel->wait_for_page_to_load_ok("30000");
533 $sel->select_ok("location", "label=OtherPlace");
534 $sel->click_ok("//button[\@name='action']");
535 $sel->wait_for_page_to_load_ok("30000");
537 $sel->click_ok("link=Locations");
538 $sel->wait_for_page_to_load_ok("30000");
540 $sel->click_ok("location");
541 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
542 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
543 $sel->wait_for_page_to_load_ok("30000");
545 $sel->body_text_isnt("Office");
548 if ($part{overview}) {
550 $sel->click_ok("link=Clients");
551 $sel->wait_for_page_to_load_ok("30000");
552 $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
554 $sel->click_ok("link=Main");
555 $sel->wait_for_page_to_load_ok("30000");
556 $sel->is_text_present_ok("Running Jobs");
558 $sel->click_ok("link=Jobs overview");
559 $sel->wait_for_page_to_load_ok("30000");
561 $sel->is_text_present_ok("All");
562 $sel->click_ok("link=All");
563 $sel->wait_for_page_to_load_ok("30000");
565 $sel->click_ok("link=$client");
566 $sel->wait_for_page_to_load_ok("30000");
568 $sel->is_text_present_ok("BackupClient1");
569 $sel->is_text_present_ok("Full Set");
573 my ($dbi, $user, $pass, $histo);
574 $sel->open_ok("/cgi-bin/bweb/bweb.pl");
575 $sel->click_ok("link=Configuration");
576 $sel->wait_for_page_to_load_ok("30000");
577 $sel->is_text_present_ok("SQL Connection");
579 $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
580 $sel->wait_for_page_to_load_ok("30000");
581 $dbi = $sel->get_value("dbi");
582 $user = $sel->get_value("user");
583 $pass = $sel->get_value("password");
584 $histo = $sel->get_value("stat_job_table");
586 $sel->type_ok("dbi", "dbi:Pg:database=dbi1");
587 $sel->type_ok("user", "user1");
588 $sel->type_ok("password", "password1");
590 $sel->type_ok("stat_job_table", ($histo eq 'Job')?"JobHisto":"Job");
592 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
593 $sel->wait_for_page_to_load_ok("30000");
595 $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
596 $sel->wait_for_page_to_load_ok("30000");
598 is($sel->get_value("dbi"), "dbi:Pg:database=dbi1", "verify dbi");
599 is($sel->get_value("user"), "user1", "verify user");
600 is($sel->get_value("password"), "password1", "verify passwd");
602 $sel->type_ok("dbi", $dbi);
603 $sel->type_ok("user", $user);
604 $sel->type_ok("password", $pass);
605 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
606 $sel->wait_for_page_to_load_ok("30000");
608 $sel->is_text_present_ok("SQL Connection");
610 if(0) { # not used for now
612 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
613 $sel->wait_for_page_to_load_ok("30000");
614 $sel->is_text_present_ok("Unnamed");
616 $sel->type_ok("name", "MyBweb2");
617 $sel->type_ok("new_dir", "bweb2-dir");
619 $sel->type_ok("dbi", $dbi);
620 $sel->type_ok("user", $user);
621 $sel->type_ok("password", $pass);
623 $sel->type_ok("stat_job_table", "JobHisto");
624 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
625 $sel->wait_for_page_to_load_ok("30000");
626 $sel->is_text_present_ok("MyBweb2");
627 $sel->is_text_present_ok("bweb2-dir");
629 # test create other conf
630 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
631 $sel->wait_for_page_to_load_ok("30000");
632 $sel->is_text_present_ok("Main Configuration");
634 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
635 $sel->wait_for_page_to_load_ok("30000");
636 $sel->is_text_present_ok("Unnamed");
638 $sel->type_ok("name", "MyBweb3");
639 $sel->type_ok("new_dir", "bweb3-dir");
640 $sel->type_ok("user", "test");
642 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
643 $sel->wait_for_page_to_load_ok("30000");
644 $sel->is_text_present_ok("MyBweb3");
646 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
647 $sel->wait_for_page_to_load_ok("30000");
648 $sel->is_text_present_ok("Main Configuration");
649 $sel->is_text_present_ok("MyBweb3");
650 $sel->is_text_present_ok("MyBweb2");
653 $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
654 $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
655 $sel->wait_for_page_to_load_ok("30000");
656 $sel->is_text_present_ok("MyBweb2");
657 $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
658 $sel->wait_for_page_to_load_ok("30000");
659 $sel->is_text_present_ok("MyBweb2");
660 $sel->type_ok("new_dir", "bweb-dir");
661 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
662 $sel->wait_for_page_to_load_ok("30000");
663 $sel->is_text_present_ok("MyBweb2");
664 $sel->is_text_present_ok("bweb-dir");
667 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
668 $sel->wait_for_page_to_load_ok("30000");
669 $sel->is_text_present_ok("MyBweb3");
671 $sel->click_ok("//input[\@name='dir' and \@value='bweb3-dir']");
672 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
673 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
674 $sel->wait_for_page_to_load_ok("30000");
675 $sel->body_text_isnt("MyBweb3");
676 $sel->is_text_present_ok("MyBweb2");
678 $sel->click_ok("//input[\@name='dir' and \@value='bweb-dir']");
679 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
680 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
681 $sel->wait_for_page_to_load_ok("30000");
682 $sel->body_text_isnt("MyBweb2");
686 if ($part{multidir}) {
688 $sel->click_ok("link=Configuration");
689 $sel->wait_for_page_to_load_ok("30000");
690 $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
691 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
692 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
693 $sel->wait_for_page_to_load_ok("30000");
694 $sel->body_text_isnt("MyBweb");
696 if (-f "$tmp/bconsole.conf.$$") {
697 move("$tmp/bconsole.conf.$$", "$bin/bconsole.conf");