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");
221 $sel->click_ok("//button[\@name='action' and \@value='purge']");
222 $sel->wait_for_page_to_load_ok("30000");
224 $sel->is_text_present_ok("Marking it purged");
227 if ($part{missingjob}) {
229 $sel->click_ok("link=Main");
230 $sel->wait_for_page_to_load_ok("30000");
231 $sel->is_text_present_ok("Running Jobs");
233 $sel->click_ok("link=Missing Jobs");
234 $sel->wait_for_page_to_load_ok("30000");
236 $sel->is_text_present_ok("BackupClient1");
237 $sel->is_text_present_ok("BackupCatalog");
238 $sel->click_ok("job");
239 $sel->click_ok("//input[\@name='job' and \@value='BackupCatalog']");
240 $sel->click_ok("//button[\@name='action' and \@value='job']");
241 $sel->wait_for_page_to_load_ok("30000");
243 $sel->body_text_isnt("BackupCatalog");
248 $sel->click_ok("link=Main");
249 $sel->wait_for_page_to_load_ok("30000");
250 $sel->is_text_present_ok("Running Jobs");
252 $sel->click_ok("link=Defined Jobs");
253 $sel->wait_for_page_to_load_ok("30000");
255 $sel->select_ok("job", "label=BackupClient1");
256 $sel->is_text_present_ok("BackupClient1");
257 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
258 $sel->wait_for_page_to_load_ok("30000");
260 $sel->is_text_present_ok("Default");
261 $sel->is_text_present_ok("Full Set");
262 $sel->is_text_present_ok("Incremental");
263 $sel->click_ok("//button[\@name='action']");
264 $sel->wait_for_page_to_load_ok("30000");
268 if (eval { $sel->is_text_present("Start Backup JobId") }) { pass; last WAIT }
273 $sel->is_text_present_ok("Log: BackupClient1 on");
274 $sel->click_ok("//button[\@name='action']");
275 $sel->wait_for_page_to_load_ok("30000");
279 if (eval { $sel->is_text_present("Termination: Backup OK") }) { pass; last WAIT }
284 my $volume = $sel->get_text("//tr[\@id='even_row']/td[12]");
285 $sel->click_ok("//button[\@name='action' and \@value='media']");
286 $sel->wait_for_page_to_load_ok("30000");
288 my $volume_found = $sel->get_text("//tr[\@id='even_row']/td[1]");
289 $sel->click_ok("media");
290 $sel->text_is("//tr[\@id='even_row']/td[5]", "Append");
291 $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
292 $sel->wait_for_page_to_load_ok("30000");
294 $sel->is_text_present_ok("Volume Infos");
295 $sel->click_ok("//img[\@title='terminated normally']");
296 $sel->wait_for_page_to_load_ok("30000");
298 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
299 $sel->wait_for_page_to_load_ok("30000");
301 $sel->is_text_present_ok("FileSet Full Set");
302 $sel->is_text_present_ok("What is included:");
303 $sel->is_text_present_ok("/regress/build");
305 $sel->wait_for_page_to_load_ok("30000");
307 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
308 $sel->wait_for_page_to_load_ok("30000");
310 $sel->is_element_present_ok("level");
311 $sel->selected_value_is("name=level", "Full");
312 $sel->selected_label_is("name=fileset", "Full Set");
313 $sel->selected_label_is("name=job", "BackupClient1");
314 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
315 $sel->wait_for_page_to_load_ok("30000");
317 $sel->is_text_present_ok("FileSet Full Set");
318 $sel->is_text_present_ok("/regress/build");
323 $sel->click_ok("link=Main");
324 $sel->wait_for_page_to_load_ok("30000");
325 $sel->is_text_present_ok("Running Jobs");
327 $sel->click_ok("link=Groups");
328 $sel->wait_for_page_to_load_ok("30000");
330 $sel->text_is("//h1", "Groups");
331 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
332 $sel->wait_for_page_to_load_ok("30000");
334 $sel->type_ok("newgroup", "All");
335 $sel->select_ok("name=client", "index=0");
336 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
337 $sel->wait_for_page_to_load_ok("30000");
339 $sel->is_text_present_ok("All");
340 $sel->click_ok("//input [\@name='client_group' and \@value='All']");
341 $sel->click_ok("//button[3]");
342 $sel->wait_for_page_to_load_ok("30000");
344 $sel->is_text_present_ok("Group: 'All'");
345 $sel->selected_index_is("name=client", "0");
346 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
347 $sel->wait_for_page_to_load_ok("30000");
349 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
350 $sel->click_ok("//button[4]");
351 $sel->wait_for_page_to_load_ok("30000");
353 $sel->click_ok("//input[\@name='client']");
354 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
355 $sel->wait_for_page_to_load_ok("30000");
357 $sel->is_text_present_ok("All");
358 $sel->click_ok("link=Groups");
359 $sel->wait_for_page_to_load_ok("30000");
361 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
362 $sel->wait_for_page_to_load_ok("30000");
364 $sel->type_ok("newgroup", "Empty");
365 $sel->click_ok("//button[\@name='action']");
366 $sel->wait_for_page_to_load_ok("30000");
368 $sel->click_ok("client_group");
369 $sel->is_text_present_ok("Empty");
370 $sel->click_ok("//button[\@name='action' and \@value='client']");
371 $sel->wait_for_page_to_load_ok("30000");
373 $sel->click_ok("//input[\@name='client']");
374 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
375 $sel->wait_for_page_to_load_ok("30000");
377 $sel->click_ok("link=Groups");
378 $sel->wait_for_page_to_load_ok("30000");
380 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
381 $sel->click_ok("//button[\@name='action' and \@value='groups_del']");
382 ok($sel->get_confirmation() =~ /^Do you want to delete this group[\s\S]$/);
383 $sel->click_ok("link=Groups");
384 $sel->wait_for_page_to_load_ok("30000");
386 $sel->click_ok("//button[\@name='action']");
387 $sel->wait_for_page_to_load_ok("30000");
389 $sel->type_ok("newgroup", "Empty");
390 $sel->click_ok("//button[\@name='action']");
391 $sel->wait_for_page_to_load_ok("30000");
393 $sel->is_text_present_ok("Empty");
394 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
395 $sel->click_ok("//button[\@name='action' and \@value='client']");
396 $sel->wait_for_page_to_load_ok("30000");
398 $sel->click_ok("//input[\@name='client']");
399 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
400 $sel->wait_for_page_to_load_ok("30000");
402 ok(not $sel->is_checked("//input[\@name='client_group' and \@value='Empty']"));
403 $sel->click_ok("link=Group Statistics");
404 $sel->wait_for_page_to_load_ok("30000");
406 $sel->is_text_present_ok("All");
407 $sel->is_text_present_ok("Empty");
408 $sel->click_ok("link=Groups");
409 $sel->wait_for_page_to_load_ok("30000");
411 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
412 $sel->click_ok("document.forms[1].elements[4]");
413 $sel->wait_for_page_to_load_ok("30000");
415 $sel->type_ok("newgroup", "EmptyGroup");
416 $sel->click_ok("//button[\@name='action']");
417 $sel->wait_for_page_to_load_ok("30000");
419 $sel->is_text_present_ok("EmptyGroup");
422 if ($part{location}) {
424 $sel->click_ok("link=Main");
425 $sel->wait_for_page_to_load_ok("30000");
426 $sel->is_text_present_ok("Running Jobs");
428 $sel->click_ok("link=Locations");
429 $sel->wait_for_page_to_load_ok("30000");
431 $sel->click_ok("//button[\@name='action' and \@value='location_add']");
432 $sel->wait_for_page_to_load_ok("30000");
434 $sel->type_ok("location", "Bank");
435 $sel->click_ok("//button[\@name='action']"); # save
436 $sel->wait_for_page_to_load_ok("30000");
438 $sel->is_text_present_ok("Bank");
439 $sel->click_ok("location");
440 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
441 $sel->wait_for_page_to_load_ok("30000");
443 $sel->type_ok("cost", "100");
444 $sel->is_text_present_ok("Location: Bank");
445 $sel->click_ok("//button[\@name='action']");
446 $sel->wait_for_page_to_load_ok("30000");
448 $sel->is_text_present_ok("100");
449 $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.png']");
450 $sel->click_ok("location");
451 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
452 $sel->wait_for_page_to_load_ok("30000");
454 $sel->select_ok("enabled", "label=no");
455 $sel->click_ok("//button[\@name='action']");
456 $sel->wait_for_page_to_load_ok("30000");
458 $sel->is_element_present_ok("//img[\@src='/bweb/inflag0.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=archived");
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/inflag2.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->type_ok("newlocation", "Office");
473 $sel->click_ok("//button[\@name='action']");
474 $sel->wait_for_page_to_load_ok("30000");
476 $sel->is_text_present_ok("Office");
477 $sel->click_ok("link=All Media");
478 $sel->wait_for_page_to_load_ok("30000");
480 $sel->click_ok("media");
481 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
482 $sel->wait_for_page_to_load_ok("30000");
484 $sel->select_ok("location", "label=Office");
485 $sel->click_ok("//button[\@name='action']");
486 $sel->wait_for_page_to_load_ok("30000");
488 $sel->selected_value_is("location", "Office");
489 $sel->click_ok("//button[\@name='action' and \@value='media']");
490 $sel->wait_for_page_to_load_ok("30000");
492 $sel->select_ok("location", "label=Office");
493 $sel->click_ok("//button[\@name='action']");
494 $sel->wait_for_page_to_load_ok("30000");
496 $sel->body_text_isnt("Vol0010");
497 $sel->click_ok("link=Locations");
498 $sel->wait_for_page_to_load_ok("30000");
500 $sel->click_ok("location");
501 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
502 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
503 $sel->wait_for_page_to_load_ok("30000");
505 $sel->is_text_present_ok("Sorry, the location must be empty");
506 $sel->click_ok("link=Locations");
507 $sel->wait_for_page_to_load_ok("30000");
509 $sel->click_ok("//button[\@name='action']");
510 $sel->wait_for_page_to_load_ok("30000");
512 $sel->type_ok("location", "OtherPlace");
513 $sel->click_ok("//button[\@name='action']");
514 $sel->wait_for_page_to_load_ok("30000");
516 $sel->click_ok("location");
517 $sel->click_ok("//button[\@name='action' and \@value='media']");
518 $sel->wait_for_page_to_load_ok("30000");
520 $sel->click_ok("media");
521 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
522 $sel->wait_for_page_to_load_ok("30000");
524 $sel->select_ok("location", "label=OtherPlace");
525 $sel->click_ok("//button[\@name='action']");
526 $sel->wait_for_page_to_load_ok("30000");
528 $sel->click_ok("link=Locations");
529 $sel->wait_for_page_to_load_ok("30000");
531 $sel->click_ok("location");
532 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
533 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
534 $sel->wait_for_page_to_load_ok("30000");
536 $sel->body_text_isnt("Office");
539 if ($part{overview}) {
541 $sel->click_ok("link=Clients");
542 $sel->wait_for_page_to_load_ok("30000");
543 $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
545 $sel->click_ok("link=Main");
546 $sel->wait_for_page_to_load_ok("30000");
547 $sel->is_text_present_ok("Running Jobs");
549 $sel->click_ok("link=Jobs overview");
550 $sel->wait_for_page_to_load_ok("30000");
552 $sel->is_text_present_ok("All");
553 $sel->click_ok("link=All");
554 $sel->wait_for_page_to_load_ok("30000");
556 $sel->click_ok("link=$client");
557 $sel->wait_for_page_to_load_ok("30000");
559 $sel->is_text_present_ok("BackupClient1");
560 $sel->is_text_present_ok("Full Set");
564 my ($dbi, $user, $pass, $histo);
565 $sel->open_ok("/cgi-bin/bweb/bweb.pl");
566 $sel->click_ok("link=Configuration");
567 $sel->wait_for_page_to_load_ok("30000");
568 $sel->is_text_present_ok("Main Configuration");
570 $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
571 $sel->wait_for_page_to_load_ok("30000");
572 $sel->is_text_present_ok("Main Configuration");
574 $dbi = $sel->get_value("dbi");
575 $user = $sel->get_value("user");
576 $pass = $sel->get_value("password");
577 $histo = $sel->get_value("stat_job_table");
579 $sel->type_ok("dbi", "dbi:Pg:database=dbi1");
580 $sel->type_ok("user", "user1");
581 $sel->type_ok("password", "password1");
583 $sel->type_ok("stat_job_table", ($histo eq 'Job')?"JobHisto":"Job");
585 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
586 $sel->wait_for_page_to_load_ok("30000");
588 $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
589 $sel->wait_for_page_to_load_ok("30000");
591 is($sel->get_value("dbi"), "dbi:Pg:database=dbi1", "verify dbi");
592 is($sel->get_value("user"), "user1", "verify user");
593 is($sel->get_value("password"), "password1", "verify passwd");
595 $sel->type_ok("dbi", $dbi);
596 $sel->type_ok("user", $user);
597 $sel->type_ok("password", $pass);
598 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
599 $sel->wait_for_page_to_load_ok("30000");
601 $sel->is_text_present_ok("Main Configuration");
604 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
605 $sel->wait_for_page_to_load_ok("30000");
606 $sel->is_text_present_ok("Unnamed");
608 $sel->type_ok("name", "MyBweb2");
609 $sel->type_ok("new_dir", "bweb2-dir");
611 $sel->type_ok("dbi", $dbi);
612 $sel->type_ok("user", $user);
613 $sel->type_ok("password", $pass);
615 $sel->type_ok("stat_job_table", "JobHisto");
616 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
617 $sel->wait_for_page_to_load_ok("30000");
618 $sel->is_text_present_ok("MyBweb2");
619 $sel->is_text_present_ok("bweb2-dir");
621 # test create other conf
622 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
623 $sel->wait_for_page_to_load_ok("30000");
624 $sel->is_text_present_ok("Main Configuration");
626 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
627 $sel->wait_for_page_to_load_ok("30000");
628 $sel->is_text_present_ok("Unnamed");
630 $sel->type_ok("name", "MyBweb3");
631 $sel->type_ok("new_dir", "bweb3-dir");
632 $sel->type_ok("user", "test");
634 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
635 $sel->wait_for_page_to_load_ok("30000");
636 $sel->is_text_present_ok("MyBweb3");
638 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
639 $sel->wait_for_page_to_load_ok("30000");
640 $sel->is_text_present_ok("Main Configuration");
641 $sel->is_text_present_ok("MyBweb3");
642 $sel->is_text_present_ok("MyBweb2");
645 $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
646 $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
647 $sel->wait_for_page_to_load_ok("30000");
648 $sel->is_text_present_ok("MyBweb2");
649 $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
650 $sel->wait_for_page_to_load_ok("30000");
651 $sel->is_text_present_ok("MyBweb2");
652 $sel->type_ok("new_dir", "bweb-dir");
653 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
654 $sel->wait_for_page_to_load_ok("30000");
655 $sel->is_text_present_ok("MyBweb2");
656 $sel->is_text_present_ok("bweb-dir");
659 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
660 $sel->wait_for_page_to_load_ok("30000");
661 $sel->is_text_present_ok("MyBweb3");
663 $sel->click_ok("//input[\@name='dir' and \@value='bweb3-dir']");
664 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
665 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
666 $sel->wait_for_page_to_load_ok("30000");
667 $sel->body_text_isnt("MyBweb3");
668 $sel->is_text_present_ok("MyBweb2");
670 $sel->click_ok("//input[\@name='dir' and \@value='bweb-dir']");
671 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
672 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
673 $sel->wait_for_page_to_load_ok("30000");
674 $sel->body_text_isnt("MyBweb2");
677 if ($part{multidir}) {
679 $sel->click_ok("link=Configuration");
680 $sel->wait_for_page_to_load_ok("30000");
681 $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
682 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
683 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
684 $sel->wait_for_page_to_load_ok("30000");
685 $sel->body_text_isnt("MyBweb");
687 if (-f "$tmp/bconsole.conf.$$") {
688 move("$tmp/bconsole.conf.$$", "$bin/bconsole.conf");