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
48 $ ./tests/bweb-test.pl
53 use Time::HiRes qw(sleep);
54 use Test::WWW::Selenium;
55 use Test::More "no_plan";
58 use scripts::functions;
59 use File::Copy qw/copy move/;
61 my ($login, $pass, $verbose, %part, @part, $noclean, $client, $multi);
62 my $url = "http://localhost:9180";
63 my @available = qw/client group location run missingjob media overview config/;
65 GetOptions ("login=s" => \$login,
68 "module=s@" => \@part,
69 "verbose" => \$verbose,
70 "nocleanup" => \$noclean,
71 "client=s" => \$client,
75 die "Usage: $0 --url http://.../cgi-bin/bweb/bweb.pl [-m module] [-n]"
79 %part = map { $_ => 1 } @part;
81 %part = map { $_ => 1 } @available;
91 `sed -i 's/# Sched/ Sched/' $conf/bacula-dir.conf`;
95 my $sel = Test::WWW::Selenium->new( host => "localhost",
97 browser => "*firefox",
98 browser_url => $url );
100 $sel->open_ok("/cgi-bin/bweb/bweb.pl?");
101 $sel->set_speed(100);
103 if ($part{multidir}) {
104 # if the current bconsole.conf doesn't contain two sections, we
106 if (!get_resource("$conf/bconsole.conf", "Director", "bweb-dir")) {
107 copy("$conf/bconsole.conf", "$tmp/bconsole.conf.$$");
108 my $r = get_resource("$conf/bconsole.conf", "Director", ".+?");
109 open(FP, ">>$conf/bconsole.conf");
110 $r =~ s/Name = .+$/Name = bweb1-dir/m;
112 $r =~ s/Name = .+$/Name = bweb2-dir/m;
116 $sel->open_ok("/cgi-bin/bweb/bweb.pl");
117 $sel->click_ok("link=Configuration");
118 $sel->wait_for_page_to_load_ok("30000");
119 $sel->is_text_present_ok("Main Configuration");
122 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
123 $sel->wait_for_page_to_load_ok("30000");
124 $sel->is_text_present_ok("Unnamed");
126 $sel->type_ok("name", "MyBweb");
127 $sel->type_ok("new_dir", "bweb1-dir");
129 $sel->type_ok("stat_job_table", "JobHisto");
130 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
131 $sel->wait_for_page_to_load_ok("30000");
132 $sel->is_text_present_ok("MyBweb");
133 $sel->is_text_present_ok("bweb1-dir");
135 $sel->click_ok("link=Main");
136 $sel->wait_for_page_to_load_ok("30000");
137 $sel->is_text_present_ok("Directors");
138 $sel->click_ok("link=MyBweb");
139 $sel->wait_for_page_to_load_ok("30000");
140 $sel->is_text_present_ok("Informations on MyBweb");
145 $sel->click_ok("link=Main");
146 $sel->wait_for_page_to_load_ok("30000");
147 $sel->is_text_present_ok("Running Jobs");
149 $sel->click_ok("link=Clients");
150 $sel->wait_for_page_to_load_ok("30000");
151 $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
153 $sel->click_ok("//input[\@name='client']"); # click the first client
154 $sel->click_ok("//button[\@name='action' and \@value='client_status']");
155 $sel->wait_for_page_to_load_ok("30000");
157 $sel->is_text_present_ok("Command output");
158 $sel->click_ok("link=Clients");
159 $sel->wait_for_page_to_load_ok("30000");
161 $sel->is_text_present_ok("Running Jobs"); # This message is in client status
166 $sel->click_ok("link=Main");
167 $sel->wait_for_page_to_load_ok("30000");
168 $sel->is_text_present_ok("Running Jobs");
170 $sel->click_ok("link=Add Media");
171 $sel->wait_for_page_to_load_ok("30000");
173 $sel->select_ok("pool", "label=Scratch");
174 $sel->select_ok("storage", "label=File");
175 $sel->type_ok("nb", "10");
176 $sel->click_ok("//button[\@name='action']"); # create 10 volumes
177 $sel->wait_for_page_to_load_ok("30000");
181 if (eval { $sel->is_text_present("Select") }) { pass; last WAIT }
186 $sel->click_ok("link=All Media");
187 $sel->wait_for_page_to_load_ok("30000");
189 $sel->is_text_present_ok("Vol0001");
190 $sel->is_text_present_ok("Vol0010");
191 $sel->select_ok("mediatype", "label=File");
192 $sel->select_ok("volstatus", "label=Append");
193 $sel->select_ok("pool", "label=Scratch");
194 $sel->click_ok("//button[\@name='action']");
195 $sel->wait_for_page_to_load_ok("30000");
197 $sel->is_text_present_ok("Vol0001");
198 $sel->click_ok("media");
199 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
200 $sel->wait_for_page_to_load_ok("30000");
202 $sel->select_ok("volstatus", "label=Archive");
203 $sel->select_ok("enabled", "label=no");
204 $sel->click_ok("//button[\@name='action']");
205 $sel->wait_for_page_to_load_ok("30000");
207 $sel->click_ok("arrow_0");
208 $sel->is_text_present_ok("New Volume status is: Archive");
209 $sel->click_ok("link=All Media");
210 $sel->wait_for_page_to_load_ok("30000");
212 $sel->is_text_present_ok("Archive");
213 $sel->select_ok("volstatus", "label=Append");
214 $sel->click_ok("//button[\@name='action']");
215 $sel->wait_for_page_to_load_ok("30000");
217 $sel->click_ok("media");
218 $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
219 $sel->wait_for_page_to_load_ok("30000");
221 $sel->is_text_present_ok("Volume Infos");
222 $sel->click_ok("//button[\@name='action' and \@value='purge']");
223 $sel->wait_for_page_to_load_ok("30000");
225 $sel->is_text_present_ok("Marking it purged");
228 if ($part{missingjob}) {
230 $sel->click_ok("link=Main");
231 $sel->wait_for_page_to_load_ok("30000");
232 $sel->is_text_present_ok("Running Jobs");
234 $sel->click_ok("link=Missing Jobs");
235 $sel->wait_for_page_to_load_ok("30000");
237 $sel->is_text_present_ok("backup");
238 $sel->is_text_present_ok("BackupCatalog");
239 $sel->click_ok("job");
240 $sel->click_ok("//input[\@name='job' and \@value='BackupCatalog']");
241 $sel->click_ok("//button[\@name='action' and \@value='job']");
242 $sel->wait_for_page_to_load_ok("30000");
244 $sel->body_text_isnt("BackupCatalog");
249 $sel->click_ok("link=Main");
250 $sel->wait_for_page_to_load_ok("30000");
251 $sel->is_text_present_ok("Running Jobs");
253 $sel->click_ok("link=Defined Jobs");
254 $sel->wait_for_page_to_load_ok("30000");
256 $sel->select_ok("job", "label=backup");
257 $sel->is_text_present_ok("backup");
258 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
259 $sel->wait_for_page_to_load_ok("30000");
261 $sel->is_text_present_ok("Default");
262 $sel->is_text_present_ok("Full Set");
263 $sel->is_text_present_ok("Incremental");
264 $sel->click_ok("//button[\@name='action']");
265 $sel->wait_for_page_to_load_ok("30000");
269 if (eval { $sel->is_text_present("Start Backup JobId") }) { pass; last WAIT }
274 $sel->is_text_present_ok("Log: backup on");
275 $sel->click_ok("//button[\@name='action']");
276 $sel->wait_for_page_to_load_ok("30000");
280 if (eval { $sel->is_text_present("Termination: Backup OK") }) { pass; last WAIT }
285 my $volume = $sel->get_text("//tr[\@id='even_row']/td[12]");
286 $sel->click_ok("//button[\@name='action' and \@value='media']");
287 $sel->wait_for_page_to_load_ok("30000");
289 my $volume_found = $sel->get_text("//tr[\@id='even_row']/td[1]");
290 $sel->click_ok("media");
291 $sel->text_is("//tr[\@id='even_row']/td[5]", "Append");
292 $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
293 $sel->wait_for_page_to_load_ok("30000");
295 $sel->is_text_present_ok("Volume Infos");
296 $sel->click_ok("//img[\@title='terminated normally']");
297 $sel->wait_for_page_to_load_ok("30000");
299 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
300 $sel->wait_for_page_to_load_ok("30000");
302 $sel->is_text_present_ok("FileSet Full Set");
303 $sel->is_text_present_ok("What is included:");
304 $sel->is_text_present_ok("/regress/build");
306 $sel->wait_for_page_to_load_ok("30000");
308 $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
309 $sel->wait_for_page_to_load_ok("30000");
311 $sel->is_element_present_ok("level");
312 $sel->selected_value_is("name=level", "Full");
313 $sel->selected_label_is("name=fileset", "Full Set");
314 $sel->selected_label_is("name=job", "backup");
315 $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
316 $sel->wait_for_page_to_load_ok("30000");
318 $sel->is_text_present_ok("FileSet Full Set");
319 $sel->is_text_present_ok("/regress/build");
324 $sel->click_ok("link=Main");
325 $sel->wait_for_page_to_load_ok("30000");
326 $sel->is_text_present_ok("Running Jobs");
328 $sel->click_ok("link=Groups");
329 $sel->wait_for_page_to_load_ok("30000");
331 $sel->text_is("//h1", "Groups");
332 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
333 $sel->wait_for_page_to_load_ok("30000");
335 $sel->type_ok("newgroup", "All");
336 $sel->select_ok("name=client", "index=0");
337 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
338 $sel->wait_for_page_to_load_ok("30000");
340 $sel->is_text_present_ok("All");
341 $sel->click_ok("//input [\@name='client_group' and \@value='All']");
342 $sel->click_ok("//button[3]");
343 $sel->wait_for_page_to_load_ok("30000");
345 $sel->is_text_present_ok("Group: 'All'");
346 $sel->selected_index_is("name=client", "0");
347 $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
348 $sel->wait_for_page_to_load_ok("30000");
350 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
351 $sel->click_ok("//button[4]");
352 $sel->wait_for_page_to_load_ok("30000");
354 $sel->click_ok("//input[\@name='client']");
355 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
356 $sel->wait_for_page_to_load_ok("30000");
358 $sel->is_text_present_ok("All");
359 $sel->click_ok("link=Groups");
360 $sel->wait_for_page_to_load_ok("30000");
362 $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
363 $sel->wait_for_page_to_load_ok("30000");
365 $sel->type_ok("newgroup", "Empty");
366 $sel->click_ok("//button[\@name='action']");
367 $sel->wait_for_page_to_load_ok("30000");
369 $sel->click_ok("client_group");
370 $sel->is_text_present_ok("Empty");
371 $sel->click_ok("//button[\@name='action' and \@value='client']");
372 $sel->wait_for_page_to_load_ok("30000");
374 $sel->click_ok("//input[\@name='client']");
375 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
376 $sel->wait_for_page_to_load_ok("30000");
378 $sel->click_ok("link=Groups");
379 $sel->wait_for_page_to_load_ok("30000");
381 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
382 $sel->click_ok("//button[\@name='action' and \@value='groups_del']");
383 ok($sel->get_confirmation() =~ /^Do you want to delete this group[\s\S]$/);
384 $sel->click_ok("link=Groups");
385 $sel->wait_for_page_to_load_ok("30000");
387 $sel->click_ok("//button[\@name='action']");
388 $sel->wait_for_page_to_load_ok("30000");
390 $sel->type_ok("newgroup", "Empty");
391 $sel->click_ok("//button[\@name='action']");
392 $sel->wait_for_page_to_load_ok("30000");
394 $sel->is_text_present_ok("Empty");
395 $sel->click_ok("//input[\@name='client_group' and \@value='All']");
396 $sel->click_ok("//button[\@name='action' and \@value='client']");
397 $sel->wait_for_page_to_load_ok("30000");
399 $sel->click_ok("//input[\@name='client']");
400 $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
401 $sel->wait_for_page_to_load_ok("30000");
403 ok(not $sel->is_checked("//input[\@name='client_group' and \@value='Empty']"));
404 $sel->click_ok("link=Group Statistics");
405 $sel->wait_for_page_to_load_ok("30000");
407 $sel->is_text_present_ok("All");
408 $sel->is_text_present_ok("Empty");
409 $sel->click_ok("link=Groups");
410 $sel->wait_for_page_to_load_ok("30000");
412 $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
413 $sel->click_ok("document.forms[1].elements[4]");
414 $sel->wait_for_page_to_load_ok("30000");
416 $sel->type_ok("newgroup", "EmptyGroup");
417 $sel->click_ok("//button[\@name='action']");
418 $sel->wait_for_page_to_load_ok("30000");
420 $sel->is_text_present_ok("EmptyGroup");
423 if ($part{location}) {
425 $sel->click_ok("link=Main");
426 $sel->wait_for_page_to_load_ok("30000");
427 $sel->is_text_present_ok("Running Jobs");
429 $sel->click_ok("link=Locations");
430 $sel->wait_for_page_to_load_ok("30000");
432 $sel->click_ok("//button[\@name='action' and \@value='location_add']");
433 $sel->wait_for_page_to_load_ok("30000");
435 $sel->type_ok("location", "Bank");
436 $sel->click_ok("//button[\@name='action']"); # save
437 $sel->wait_for_page_to_load_ok("30000");
439 $sel->is_text_present_ok("Bank");
440 $sel->click_ok("location");
441 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
442 $sel->wait_for_page_to_load_ok("30000");
444 $sel->type_ok("cost", "100");
445 $sel->is_text_present_ok("Location: Bank");
446 $sel->click_ok("//button[\@name='action']");
447 $sel->wait_for_page_to_load_ok("30000");
449 $sel->is_text_present_ok("100");
450 $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.png']");
451 $sel->click_ok("location");
452 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
453 $sel->wait_for_page_to_load_ok("30000");
455 $sel->select_ok("enabled", "label=no");
456 $sel->click_ok("//button[\@name='action']");
457 $sel->wait_for_page_to_load_ok("30000");
459 $sel->is_element_present_ok("//img[\@src='/bweb/inflag0.png']");
460 $sel->click_ok("location");
461 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
462 $sel->wait_for_page_to_load_ok("30000");
464 $sel->select_ok("enabled", "label=archived");
465 $sel->click_ok("//button[\@name='action']");
466 $sel->wait_for_page_to_load_ok("30000");
468 $sel->is_element_present_ok("//img[\@src='/bweb/inflag2.png']");
469 $sel->click_ok("location");
470 $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
471 $sel->wait_for_page_to_load_ok("30000");
473 $sel->type_ok("newlocation", "Office");
474 $sel->click_ok("//button[\@name='action']");
475 $sel->wait_for_page_to_load_ok("30000");
477 $sel->is_text_present_ok("Office");
478 $sel->click_ok("link=All Media");
479 $sel->wait_for_page_to_load_ok("30000");
481 $sel->click_ok("media");
482 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
483 $sel->wait_for_page_to_load_ok("30000");
485 $sel->select_ok("location", "label=Office");
486 $sel->click_ok("//button[\@name='action']");
487 $sel->wait_for_page_to_load_ok("30000");
489 $sel->selected_value_is("location", "Office");
490 $sel->click_ok("//button[\@name='action' and \@value='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->body_text_isnt("Vol0010");
498 $sel->click_ok("link=Locations");
499 $sel->wait_for_page_to_load_ok("30000");
501 $sel->click_ok("location");
502 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
503 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
504 $sel->wait_for_page_to_load_ok("30000");
506 $sel->is_text_present_ok("Sorry, the location must be empty");
507 $sel->click_ok("link=Locations");
508 $sel->wait_for_page_to_load_ok("30000");
510 $sel->click_ok("//button[\@name='action']");
511 $sel->wait_for_page_to_load_ok("30000");
513 $sel->type_ok("location", "OtherPlace");
514 $sel->click_ok("//button[\@name='action']");
515 $sel->wait_for_page_to_load_ok("30000");
517 $sel->click_ok("location");
518 $sel->click_ok("//button[\@name='action' and \@value='media']");
519 $sel->wait_for_page_to_load_ok("30000");
521 $sel->click_ok("media");
522 $sel->click_ok("//button[\@name='action' and \@value='update_media']");
523 $sel->wait_for_page_to_load_ok("30000");
525 $sel->select_ok("location", "label=OtherPlace");
526 $sel->click_ok("//button[\@name='action']");
527 $sel->wait_for_page_to_load_ok("30000");
529 $sel->click_ok("link=Locations");
530 $sel->wait_for_page_to_load_ok("30000");
532 $sel->click_ok("location");
533 $sel->click_ok("//button[\@name='action' and \@value='location_del']");
534 ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
535 $sel->wait_for_page_to_load_ok("30000");
537 $sel->body_text_isnt("Office");
540 if ($part{overview}) {
542 $sel->click_ok("link=Clients");
543 $sel->wait_for_page_to_load_ok("30000");
544 $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
546 $sel->click_ok("link=Main");
547 $sel->wait_for_page_to_load_ok("30000");
548 $sel->is_text_present_ok("Running Jobs");
550 $sel->click_ok("link=Jobs overview");
551 $sel->wait_for_page_to_load_ok("30000");
553 $sel->is_text_present_ok("All");
554 $sel->click_ok("link=All");
555 $sel->wait_for_page_to_load_ok("30000");
557 $sel->click_ok("link=$client");
558 $sel->wait_for_page_to_load_ok("30000");
560 $sel->is_text_present_ok("backup");
561 $sel->is_text_present_ok("Full Set");
565 my ($dbi, $user, $pass, $histo);
566 $sel->open_ok("/cgi-bin/bweb/bweb.pl");
567 $sel->click_ok("link=Configuration");
568 $sel->wait_for_page_to_load_ok("30000");
569 $sel->is_text_present_ok("Main Configuration");
571 $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
572 $sel->wait_for_page_to_load_ok("30000");
573 $sel->is_text_present_ok("Main Configuration");
575 $dbi = $sel->get_value("dbi");
576 $user = $sel->get_value("user");
577 $pass = $sel->get_value("password");
578 $histo = $sel->get_value("stat_job_table");
580 $sel->type_ok("dbi", "dbi:Pg:database=dbi1");
581 $sel->type_ok("user", "user1");
582 $sel->type_ok("password", "password1");
584 $sel->type_ok("stat_job_table", ($histo eq 'Job')?"JobHisto":"Job");
586 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
587 $sel->wait_for_page_to_load_ok("30000");
589 $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
590 $sel->wait_for_page_to_load_ok("30000");
592 is($sel->get_value("dbi"), "dbi:Pg:database=dbi1", "verify dbi");
593 is($sel->get_value("user"), "user1", "verify user");
594 is($sel->get_value("password"), "password1", "verify passwd");
596 $sel->type_ok("dbi", $dbi);
597 $sel->type_ok("user", $user);
598 $sel->type_ok("password", $pass);
599 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
600 $sel->wait_for_page_to_load_ok("30000");
602 $sel->is_text_present_ok("Main Configuration");
605 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
606 $sel->wait_for_page_to_load_ok("30000");
607 $sel->is_text_present_ok("Unnamed");
609 $sel->type_ok("name", "MyBweb2");
610 $sel->type_ok("new_dir", "bweb2-dir");
612 $sel->type_ok("dbi", $dbi);
613 $sel->type_ok("user", $user);
614 $sel->type_ok("password", $pass);
616 $sel->type_ok("stat_job_table", "JobHisto");
617 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
618 $sel->wait_for_page_to_load_ok("30000");
619 $sel->is_text_present_ok("MyBweb2");
620 $sel->is_text_present_ok("bweb2-dir");
622 # test create other conf
623 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
624 $sel->wait_for_page_to_load_ok("30000");
625 $sel->is_text_present_ok("Main Configuration");
627 $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
628 $sel->wait_for_page_to_load_ok("30000");
629 $sel->is_text_present_ok("Unnamed");
631 $sel->type_ok("name", "MyBweb3");
632 $sel->type_ok("new_dir", "bweb3-dir");
633 $sel->type_ok("user", "test");
635 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
636 $sel->wait_for_page_to_load_ok("30000");
637 $sel->is_text_present_ok("MyBweb3");
639 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
640 $sel->wait_for_page_to_load_ok("30000");
641 $sel->is_text_present_ok("Main Configuration");
642 $sel->is_text_present_ok("MyBweb3");
643 $sel->is_text_present_ok("MyBweb2");
646 $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
647 $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
648 $sel->wait_for_page_to_load_ok("30000");
649 $sel->is_text_present_ok("MyBweb2");
650 $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
651 $sel->wait_for_page_to_load_ok("30000");
652 $sel->is_text_present_ok("MyBweb2");
653 $sel->type_ok("new_dir", "bweb-dir");
654 $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
655 $sel->wait_for_page_to_load_ok("30000");
656 $sel->is_text_present_ok("MyBweb2");
657 $sel->is_text_present_ok("bweb-dir");
660 $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
661 $sel->wait_for_page_to_load_ok("30000");
662 $sel->is_text_present_ok("MyBweb3");
664 $sel->click_ok("//input[\@name='dir' and \@value='bweb3-dir']");
665 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
666 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
667 $sel->wait_for_page_to_load_ok("30000");
668 $sel->body_text_isnt("MyBweb3");
669 $sel->is_text_present_ok("MyBweb2");
671 $sel->click_ok("//input[\@name='dir' and \@value='bweb-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("MyBweb2");
678 if ($part{multidir}) {
680 $sel->click_ok("link=Configuration");
681 $sel->wait_for_page_to_load_ok("30000");
682 $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
683 $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
684 ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
685 $sel->wait_for_page_to_load_ok("30000");
686 $sel->body_text_isnt("MyBweb");
688 if (-f "$tmp/bconsole.conf.$$") {
689 move("$tmp/bconsole.conf", "$bin/bconsole.conf");