/[openfoncier]/trunk/tests/testInstruction.php
ViewVC logotype

Annotation of /trunk/tests/testInstruction.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2116 - (hide annotations)
Tue Jul 30 12:37:29 2013 UTC (11 years, 6 months ago) by nhaye
File size: 20907 byte(s)
Correction des champs affichés dans le formulaire de données techniques,
ajout des fonction javascript de calculs automatique,
suppression des champs non utiles,
modification de la mise en page des données techniques et cerfa (setLayout)
maj des traductions,

1 fmichon 1664 <?php
2     /**
3     *
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8    
9     //
10 fmichon 1677 require_once "base.php";
11 fmichon 1664
12     /**
13     *
14     */
15 vpihour 2078 class Instruction extends Base2TestCase {
16 fmichon 1664
17     /**
18     * Ce test vise uniquement à vérifier que les écrans correspondant à chaque
19     * entrée de menu ne génère pas une erreur de base de données
20     */
21 fmichon 1755 public function test_01_ouverture_de_chaque_ecran_par_l_instructeur() {
22 fmichon 1664 //
23 fmichon 1727 $this->login("instr", "instr");
24 fmichon 1664 //
25 vpihour 2078 $this->byLinkText("Mes Encours")->click();
26 fmichon 1720 $this->verifyNoErrors();
27 vpihour 2078 $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());
28 fmichon 1664 //
29 vpihour 2078 $this->byLinkText("Tous Les Encours")->click();
30 fmichon 1720 $this->verifyNoErrors();
31 vpihour 2078 $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());
32 fmichon 1664 //
33 vpihour 2078 $this->byLinkText("Mes Clôturés")->click();
34 fmichon 1720 $this->verifyNoErrors();
35 vpihour 2078 $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());
36 fmichon 1664 //
37 vpihour 2078 $this->byLinkText("Tous Les Clôturés")->click();
38 fmichon 1720 $this->verifyNoErrors();
39 vpihour 2078 $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());
40 fmichon 1664 //
41 vpihour 2078 $this->byLinkText("Recherche")->click();
42 fmichon 1720 $this->verifyNoErrors();
43 vpihour 2078 $this->assertEquals("DI", $this->byXPath("//a[@href='#tabs-1']")->text());
44 fmichon 1664 //
45 vpihour 2078 $this->byLinkText("Dossiers À Qualifier")->click();
46 fmichon 1720 $this->verifyNoErrors();
47 softime 2112 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
48 fmichon 1664 //
49 vpihour 2078 $this->byLinkText("Mes Retours")->click();
50 fmichon 1720 $this->verifyNoErrors();
51 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
52 fmichon 1664 //
53 vpihour 2078 $this->byLinkText("Tous Les Retours")->click();
54 fmichon 1720 $this->verifyNoErrors();
55 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
56 fmichon 1664 //
57 vpihour 2078 $this->byLinkText("Mes Messages")->click();
58 fmichon 1720 $this->verifyNoErrors();
59 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
60 fmichon 1664 //
61 vpihour 2078 $this->byLinkText("Tous Les Messages")->click();
62 fmichon 1720 $this->verifyNoErrors();
63 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
64 fmichon 1664 //
65 vpihour 2078 $this->byCssSelector("a.commission_mes_retours-16")->click();
66 fmichon 1720 $this->verifyNoErrors();
67 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
68 fmichon 1664 //
69 vpihour 2078 $this->byCssSelector("a.commission_tous_retours-16")->click();
70 fmichon 1720 $this->verifyNoErrors();
71 vpihour 2078 $this->assertEquals("dossier", $this->byCssSelector(".col-1 .name a")->text());
72 fmichon 1885
73 fmichon 1664 //
74     $this->logout();
75     }
76 fmichon 1885
77 fmichon 1755 /**
78     *
79     */
80     public function test_02_visualisation_di_et_da_par_l_instructeur_en_charge() {
81 vpihour 2078
82 fmichon 1755 // On se connecte en tant que "instr"
83     $this->login("instr", "instr");
84     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
85     $this->verifyNoErrors();
86     // On clique sur le lien "Mes encours" dans le menu
87 vpihour 2078 $this->byLinkText("Mes Encours")->click();
88 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
89     $this->verifyNoErrors();
90     // On clique sur le lien "AZ0130551200001P0" dans le tableau
91 softime 2112 $this->byLinkText("AZ 013055 12 00001P0")->click();
92 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
93     $this->verifyNoErrors();
94     // On vérifie que le breadcrumb est correct
95 softime 2112 $this->assertEquals("AZ 013055 12 00001P0", $this->byId("dossier_libelle")->text());
96 fmichon 1755 // On clique sur l'onglet "Instruction"
97 vpihour 2078 $this->byId("instruction")->click();
98 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
99     $this->verifyNoErrors();
100     // On clique sur l'onglet "Consultation(s)"
101 vpihour 2078 $this->byId("consultation")->click();
102 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
103     $this->verifyNoErrors();
104     // On clique sur l'onglet "Lot(s)"
105 vpihour 2078 $this->byId("lot")->click();
106 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
107     $this->verifyNoErrors();
108     // On clique sur l'onglet "Message(s)"
109 vpihour 2078 $this->byId("dossier_message")->click();
110 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
111     $this->verifyNoErrors();
112     // On clique sur l'onglet "Commission(s)"
113 vpihour 2078 $this->byId("dossier_commission")->click();
114 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
115     $this->verifyNoErrors();
116 fmichon 1763 // On clique sur l'onglet "Bloc-note"
117 vpihour 2078 $this->byId("blocnote")->click();
118 fmichon 1763 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
119     $this->verifyNoErrors();
120 fmichon 1755 // On clique sur l'onglet "DA"
121 vpihour 2078 $this->byId("dossier_autorisation")->click();
122 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
123     $this->verifyNoErrors();
124     // On clique sur le lien "AZ0130551200001" dans le tableau
125 softime 2112 $this->byLinkText("AZ 013055 12 00001")->click();
126 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
127     $this->verifyNoErrors();
128     // On vérifie que le breadcrumb est correct
129 softime 2112 $this->assertEquals("AZ 013055 12 00001", $this->byCssSelector(".form-content #dossier_autorisation_libelle")->text());
130 fmichon 1755 // On clique sur l'onglet "Dossier(s) d'instruction"
131 vpihour 2078 $this->byId("dossier_instruction")->click();
132 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
133     $this->verifyNoErrors();
134     // On clique sur le lien "AZ0130551200001P0" dans le tableau
135 softime 2112 $this->byLinkText("AZ 013055 12 00001P0")->click();
136 fmichon 1755 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
137     $this->verifyNoErrors();
138     // On vérifie que le breadcrumb est correct
139 softime 2112 $this->assertEquals("AZ 013055 12 00001P0", $this->byId("dossier_libelle")->text());
140 fmichon 1885 // On se déconnecte
141 fmichon 1755 $this->logout();
142     }
143    
144 fmichon 1885 /**
145     *
146     */
147     public function test_03_informations_du_widget_profil_instructeur() {
148     // On se connecte en tant que "instr"
149     $this->login("instr", "instr");
150     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
151     $this->verifyNoErrors();
152     // On vérifie que le titre du widget est correct
153 vpihour 2078 $this->assertEquals("Profil instructeur", $this->byCssSelector("#widget_2 .widget-header h3")->text());
154 fmichon 1885 // On vérifie que le nom de l'instructeur affiché est le bon
155 vpihour 2078 $this->assertEquals("Louis Laurent", $this->byCssSelector("div.instructeur-infos-nom > span.value")->text());
156 fmichon 1885 // On vérifie que la division de l'instructeur affichée est la bonne
157 vpihour 2078 $this->assertEquals("H", $this->byCssSelector("div.instructeur-infos-division > span.value")->text());
158 fmichon 1885 // On se déconnecte
159 vpihour 2078 $this->byLinkText("Déconnexion")->click();
160     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
161     $this->verifyNoErrors();
162 fmichon 1885 // On se connecte en tant que "instr"
163     $this->login("instr1", "instr");
164     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
165     $this->verifyNoErrors();
166     // On vérifie que le titre du widget est correct
167 vpihour 2078 $this->assertEquals("Profil instructeur", $this->byCssSelector("#widget_2 .widget-header h3")->text());
168 fmichon 1885 // On vérifie que le nom de l'instructeur affiché est le bon
169 vpihour 2078 $this->assertEquals("Martine Nadeau", $this->byCssSelector("div.instructeur-infos-nom > span.value")->text());
170 fmichon 1885 // On vérifie que la division de l'instructeur affichée est la bonne
171 vpihour 2078 $this->assertEquals("H", $this->byCssSelector("div.instructeur-infos-division > span.value")->text());
172 fmichon 1885 // On se déconnecte
173 vpihour 2078 $this->byLinkText("Déconnexion")->click();
174     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
175     $this->verifyNoErrors();
176 fmichon 1885 // On se connecte en tant que "instr"
177     $this->login("instr2", "instr");
178     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
179     $this->verifyNoErrors();
180     // On vérifie que le titre du widget est correct
181 vpihour 2078 $this->assertEquals("Profil instructeur", $this->byCssSelector("#widget_2 .widget-header h3")->text());
182 fmichon 1885 // On vérifie que le nom de l'instructeur affiché est le bon
183 vpihour 2078 $this->assertEquals("Roland Richard", $this->byCssSelector("div.instructeur-infos-nom > span.value")->text());
184 fmichon 1885 // On vérifie que la division de l'instructeur affichée est la bonne
185 vpihour 2078 $this->assertEquals("J", $this->byCssSelector("div.instructeur-infos-division > span.value")->text());
186 fmichon 1885 // On se déconnecte
187     $this->logout();
188     }
189 vpihour 2078
190     /**
191     * Ajout d'instructions par l'instructeur sur le dossier DP0130551200001P0
192     */
193     public function test_04_ajout_instructions_par_instructeur() {
194    
195    
196     // On se connecte en tant que "instr"
197     $this->login("instr", "instr");
198     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
199     $this->verifyNoErrors();
200     // On clique sur le lien "Mes encours" dans le menu
201     $this->byLinkText("Mes Encours")->click();
202     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
203     $this->verifyNoErrors();
204 nhaye 2107 sleep(1);
205 vpihour 2078 // On clique sur le lien "AZ0130551200001P0" dans le tableau
206 softime 2112 $this->byLinkText("DP 013055 12 00001P0")->click();
207 vpihour 2078 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
208     $this->verifyNoErrors();
209     // On clique sur l'onglet "Instruction"
210     $this->byId("instruction")->click();
211     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
212     $this->verifyNoErrors();
213     //Ajout d'une instruction simple
214     // On clique sur le lien d'ajout dans le tableau
215     $this->byCssSelector(".actions-max-1 a")->click();
216     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
217     $this->verifyNoErrors();
218     //On choisi un événement
219     $this->select($this->byId("evenement"))->selectOptionByValue("22");
220     //On valide le formulaire
221     $this->byXPath("//input[@value='Ajouter']")->click();
222     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
223     $this->verifyNoErrors();
224     sleep(1);
225     $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
226     //On retourne sur le tableau d'instructions
227     $this->byCssSelector("#sousform-instruction .retour")->click();
228     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
229     $this->verifyNoErrors();
230     //On affiche l'instruction
231     $this->byLinkText("CDEC majoration appel decision")->click();
232     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
233     $this->verifyNoErrors();
234     //On vérifie que certains champs n'apparaissent pas
235     $this->assertFalse($this->byId("date_envoi_controle_legalite")->displayed());
236     $this->assertFalse($this->byId("date_retour_controle_legalite")->displayed());
237     //On retourne sur le tableau d'instructions
238     $this->byCssSelector("#sousform-instruction .retour")->click();
239     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
240     $this->verifyNoErrors();
241     //Ajout d'une instruction de type arrêté
242     // On clique sur le lien d'ajout dans le tableau
243     $this->byCssSelector(".actions-max-1 a")->click();
244     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
245     $this->verifyNoErrors();
246     //On choisi un événement
247     $this->select($this->byId("evenement"))->selectOptionByValue("81");
248     //On valide le formulaire
249     $this->byXPath("//input[@value='Ajouter']")->click();
250     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
251     $this->verifyNoErrors();
252     sleep(1);
253     $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
254     //On retourne sur le tableau d'instructions
255     $this->byCssSelector("#sousform-instruction .retour")->click();
256     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
257     $this->verifyNoErrors();
258     //On affiche l'instruction
259     $this->byLinkText("accepter un dossier sans réserve")->click();
260     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
261     $this->verifyNoErrors();
262     //On vérifie que certains champs apparaissent
263     $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
264     $this->assertTrue($this->byClassName("libelle-date_envoi_controle_legalite")->displayed());
265     // On se déconnecte
266     $this->logout();
267     }
268 nhaye 2088
269 nhaye 2107 /**
270 nhaye 2088 * Test le formulaire de la demande de type qui possède des select filtrés
271     */
272     public function test_05_ajout_lot() {
273     // On se connecte en tant que "instr"
274     $this->login("instr", "instr");
275     // On clique sur le lien "Mes encours" dans le menu
276     $this->byLinkText("Mes Encours")->click();
277     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
278     $this->verifyNoErrors();
279     // On clique sur le lien "AZ0130551200001P0" dans le tableau
280 softime 2112 $this->byLinkText("AZ 013055 12 00001P0")->click();
281 nhaye 2088 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
282     $this->verifyNoErrors();
283     // On clique sur l'onglet "Lot(s)"
284     $this->byId("lot")->click();
285     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
286     $this->verifyNoErrors();
287     // On clique sur le bouton d'ajout de lots
288     $this->byXPath("//div[@id='sousform-lot']/table/thead/tr/th/a/span")->click();
289     // Vérification des champs obligatoires
290     $this->byXPath("//input[@value='Ajouter']")->click();
291     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
292     $this->verifyNoErrors();
293     // On vérifie que le message de champ vide soit affiché
294     $this->assertRegExp('/.*SAISIE NON ENREGISTRÉE.*/', $this->byCssSelector("#sousform-lot .message .text")->text());
295     // Insertion d'un lot
296     $this->byId("libelle")->value("Lot n°1");
297     $this->byXPath("//input[@value='Ajouter']")->click();
298     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
299     $this->verifyNoErrors();
300     // On retourne sur le tableau listant les lots
301     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();
302     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
303     $this->verifyNoErrors();
304     // On clique sur le bouton d'ajout de lots
305     $this->byXPath("//div[@id='sousform-lot']/table/thead/tr/th/a/span")->click();
306     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
307     $this->verifyNoErrors();
308     // Insertion d'un second lot
309     $this->byId("libelle")->value("Lot n°2");
310     $this->byXPath("//input[@value='Ajouter']")->click();
311 nhaye 2107 sleep(1);
312 nhaye 2088 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
313     $this->verifyNoErrors();
314     // On retourne sur le tableau listant les lots
315     $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();
316     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
317     $this->verifyNoErrors();
318 nhaye 2107 // On se déconnecte
319     $this->logout();
320 nhaye 2088 }
321 nhaye 2107
322     /**
323     * Test du lien automatique entre choix autorité compétente dans DI et
324     * évènement d'instruction à créer
325     */
326     public function test_06_modification_autorite_competente() {
327     // On se connecte en tant que "instr"
328     $this->login("instr", "instr");
329     // On clique sur le lien "Mes encours" dans le menu
330     $this->byLinkText("Mes Encours")->click();
331     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
332     $this->verifyNoErrors();
333     // On clique sur le lien "AZ0130551200001P0" dans le tableau
334 softime 2112 $this->byLinkText("AZ 013055 12 00001P0")->click();
335 nhaye 2107 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
336     $this->verifyNoErrors();
337     // On clique sur l'onglet "Instruction"
338     $this->byId("instruction")->click();
339     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
340     $this->verifyNoErrors();
341     // On clique sur le bouton d'ajout de lots
342     $this->byXPath("//div[@id='sousform-instruction']/table/thead/tr/th/a/span")->click();
343     // Vérification des champs obligatoires
344     $this->byXPath("//input[@value='Ajouter']")->click();
345     sleep(1);
346     //On choisi un événement
347     $this->select($this->byId("evenement"))->selectOptionByValue("94");
348     // Validation du formulaire
349     $this->byXPath("//input[@value='Ajouter']")->click();
350     sleep(1);
351     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
352     $this->verifyNoErrors();
353     $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text());
354     $this->byCssSelector("form[name=\"f2\"] > a.retour")->click();
355     // Retour à l'onglet principal
356     $this->byId("main")->click();
357     $this->refresh();
358     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
359     $this->verifyNoErrors();
360     // On verifie que l'autorité compétente à changée.
361     $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
362     // On se déconnecte
363     $this->deconnect();
364     // On se connecte en tant que "admin"
365     $this->login("admin", "admin");
366     sleep(1);
367     $this->byLinkText("Instruction")->click();
368     // On clique sur le lien "Recherche" dans le menu
369     $this->byLinkText("Recherche")->click();
370     // On clique sur le lien "AZ0130551200001P0" dans le tableau
371 softime 2112 $this->byLinkText("AZ 013055 12 00001P0")->click();
372 nhaye 2107 // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
373     $this->verifyNoErrors();
374     // On verifie que l'autorité compétente à changée.
375     $this->assertRegExp('/.*Commune pour état*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
376     // On clique sur l'onglet "Instruction"
377     $this->byId("instruction")->click();
378     $this->byLinkText("Changer l'autorité compétente 'commune état'")->click();
379     sleep(1);
380     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
381     $this->verifyNoErrors();
382     $this->byXPath("(//div[@id='portlet-actions']/ul/li[2]/a/span)[2]")->click();
383     // On supprime l'element et on verifie le retour de l'autorité "commune"
384     $this->byCssSelector("form[name=\"f2\"] > a.retour")->click();
385     // Retour à l'onglet principal
386     $this->byId("main")->click();
387     $this->refresh();
388     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
389     $this->verifyNoErrors();
390     // On verifie que l'autorité compétente à changée.
391     $this->assertRegExp('/.*Commune*/', $this->byCssSelector("#tabs-1 #autorite_competente")->text());
392     // On se déconnecte
393     $this->logout();
394     }
395    
396 nhaye 2116 /**
397     * Test de l'ajout de données techniques au dossier
398     */
399     public function test_07_edition_donnees_techniques() {
400     // On se connecte en tant que "instr"
401     $this->login("instr", "instr");
402     // On clique sur le lien "Mes encours" dans le menu
403     $this->byLinkText("Mes Encours")->click();
404     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
405     $this->verifyNoErrors();
406     // On clique sur le lien "AZ0130551200001P0" dans le tableau
407     $this->byLinkText("AZ 013055 12 00001P0")->click();
408     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
409     $this->verifyNoErrors();
410     // On click sur le lien "Données techniques"
411     $this->byXPath("//div[@id='portlet-actions']/ul/li[2]/a/span")->click();
412     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
413     $this->verifyNoErrors();
414     // Validation du formulaire
415     $this->byXPath("//input[@value='Modifier']")->click();
416     // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché
417     $this->verifyNoErrors();
418     // On se déconnecte
419     $this->logout();
420    
421     }
422 fmichon 1664 }
423    
424     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26