Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 16.32 KB | None | 0 0
  1. # # # # # # # #
  2. #
  3. # Reszletes infok a http://wiki/w/GSAutoTester/Data_driven_teszt_%C3%ADr%C3%A1sa wiki oldalon talalhatoak
  4. #
  5. # Ide kerul egy leiras, hogy mit csinal a teszt. Workflow teszt eseten nehany mondattal leirjuk a teszt lefutasat. Adatvezerelt
  6. # teszt eseten leirjuk az ismetlodest, es az adatvezerles modjat is. Bonyolultabb teszt eseten leirhatjuk a megertest segito
  7. # hatterinformaciokat is, de a tesztek aktuals problemait nem itt reszletezzuk.
  8. # Ha felsorolunk valamit, azt az alabbi formatumban tehetjuk meg:
  9. #
  10. #   - Elso pont
  11. #   - Masodik pont
  12. #
  13. # Felsorolas utan folytatodhat a teszt leirasa. Ekezetes karaktereket ne hasznaljunk!
  14. #
  15. # # # # # # # #
  16.  
  17.  
  18.  
  19. use File::Spec::Functions;
  20. use Getopt::Long;
  21. BEGIN { @filePath = File::Spec::Functions::splitdir (__FILE__); }
  22. use lib catfile (@filePath[0..$#filePath - 1], '../../../../framework/lib');
  23.  
  24. use strict;
  25. use warnings;
  26.  
  27. use GS::TestDefaults;
  28. use GS::TestManager;
  29. use GS::SUT 'CurrentAC';
  30. use GS::SUT 'BIMcloud';
  31. use GS::v2019::Controls;
  32. use GS::Misc;
  33. use GS::v2019::GUI;
  34. use GS::v2019::AC::Main;
  35. use GS::v2019::ACCore;
  36. use GS::v2019::AC::TeamWork;
  37. use GS::Web::Page;
  38. use GS::BIMcloud::Server;
  39. use GS::BIMcloud::Web::PortalServer;
  40. use Test::BIMcloudWebUI;
  41.  
  42. testInit ();
  43.  
  44. eval{frontmost; goto start};
  45.  
  46. initTestFiles ();
  47.  
  48. step 1;
  49. command 'deletePrefsAndRegs';
  50.     useGlobalBIMServerFolder ();
  51.     deletePrefsAndRegs ();
  52.     initTW();
  53.  
  54.  
  55. step 2;
  56. command 'Install BIMcloud Basic Manager and Server';
  57.     setBIMServerMode ('free');
  58.     installBIMCloudManager ();
  59.     installBIMCloudServer (InstanceID=>"2");
  60.  
  61.  
  62. step 3;
  63. command 'Set up Environment';  
  64.     setupEnvironment();
  65.    
  66.    
  67. step 4;
  68. command "Process data file";
  69.     runDataDrivenTest ();  # read data file and call forEachData function for all of its elements
  70.  
  71.  
  72. step 5;
  73. command 'Close browser';
  74.     WebClose ();
  75.  
  76.  
  77. step 6;
  78. command 'RemoveTeamwork Server';
  79.     removeBIMCloudServer ();      
  80.     removeBIMCloudManager ();
  81.    
  82.    
  83. testEnd;
  84.  
  85. #
  86. # This function is called for each element of data tile
  87. #    
  88.  
  89. sub setupEnvironment {
  90.  
  91.     subStep 1;
  92.     command 'Stop BIMcloud Basic Manager and Server';
  93.         stopBIMCloudManager ();
  94.         stopBIMcloudServerService ();
  95.  
  96.  
  97.     subStep 2;
  98.     command 'Change db (db content: 15 pieces of user with differen permission)';
  99.         changeBIMcloudManagerDB ();
  100.         changeBIMcloudServerDB ();
  101.  
  102.  
  103.     subStep 3;
  104.     command 'Start BIMcloud Basic Manager and Server';
  105.         startBIMCloudManager ();
  106.         startBIMcloudServerService ();
  107.         waitForPortalToRespond();
  108.  
  109.  
  110.     subStep 4;
  111.     command 'Open browser';
  112.         WebOpen ("http://$hostname:$defaultPortalServerPort");
  113.  
  114.  
  115. subEnd;
  116. }
  117.  
  118.  
  119. sub forEachTestCase
  120. {
  121.      my %params = @_;
  122.  
  123. subStep 1;
  124. command 'Login with User';
  125.     UIlogin ($params{username}, $params{password});
  126.  
  127.  
  128. subStep 2;
  129. command 'Select Projects Root';
  130.     if (!UIselectProjectsRoot ()) {
  131.         UIlogout ();
  132.         return;
  133.     }  #csak akkor lepunk be az if agba, ha nem sikerult kiszelektalnunk az elemet, egyeb esetben lep tovabb a teszt a kovetkezo substepre
  134.  
  135.  
  136. #ROOT
  137. #NAVIGATOR
  138.  
  139.  
  140. subStep 3;
  141. command 'Create Project Folder';
  142.     UIcreateProjectFolderFromNavigator ('.test--navigator-root', $params{username} . ' f1');
  143.     UIcreateProjectFolderFromSummary ('.test--navigator-root');
  144.  
  145.  
  146. subStep 4;
  147. command 'Import Project';
  148.     UIimportProjectFromNavigator ('.test--navigator-root', 'houston.BIMProject23', $params{username} . ' p1');
  149.  
  150.  
  151. subStep 5;
  152. command 'Import Library';
  153.     UIimportLibraryFromNavigator ('.test--navigator-root', 'vanegykisgond.BIMLibrary', $params{username} . ' l1');
  154.  
  155.  
  156. ##SUMMARY
  157.  
  158. #
  159. #subStep 6;
  160. #command 'Create Project Folder';
  161. #   UIcreateProjectFolderFromSummary ('.test--navigator-root', $params{username} . ' f2');
  162. #
  163. #
  164. #subStep 7;
  165. #command 'Import Project';
  166. #   UIimportProjectFromSummary ('.test--navigator-root', 'houston.BIMProject23', $params{username} . ' p2');
  167. #
  168. #
  169. #subStep 8;
  170. #command 'Import Library';
  171. #   UIimportLibraryFromSummary ('.test--navigator-root', 'vanegykisgond.BIMLibrary', $params{username} . ' l2');
  172.  
  173.  
  174. ##PANELS
  175.  
  176.  
  177. #subStep 11;
  178. #command 'Lock Project';
  179. #   UIlockProject ('.test--list-item-houston');
  180. #  
  181.  
  182. #subStep 12;
  183. #command 'Create Library Snapshot';
  184. #   UImanualLibrarySnapshot ('.test--list-item-legacy_libraries_folder-archicad-library-23', 'Snapshot1'); 
  185.  
  186.  
  187. subStep 9;
  188. command 'Activities Search';
  189.     UIactivitiesSearch ('.test--navigator-root', 'server');
  190.  
  191.  
  192. subStep 10;
  193. command 'Activities Filter';
  194.     UIactivitiesFilter ('.test--navigator-root', '.test--filter-type .test--dropdown-item:nth-child(4)');
  195.  
  196.  
  197. #subStep 11;
  198. #command 'Export Activities';
  199. #   UIexportActivities ();
  200.  
  201.  
  202. subStep 12;
  203. command 'Logout';
  204.     UIlogout ();
  205.  
  206.  
  207. ####################
  208. #### FUGGVENYEK ####
  209. ####################
  210.  
  211.  
  212. sub UIlogout {
  213.     WebClick('.test--section-header .test--dropdown-btn');
  214.     WebClick('.test--item-logout');
  215. }
  216.  
  217.  
  218. sub UIlogin {
  219.     my ($username, $password) = @_;
  220.    
  221.     WebClick('.test--input-username');
  222.     WebSetValue('.test--input-username', $username);
  223.     WebClick('.test--input-password');
  224.     WebSetValue('.test--input-password', $password);
  225.         WebBitmapCheck ('Login_window', '.login-content');
  226.     WebClick('.test--btn-action');
  227. }
  228.  
  229.  
  230. sub UIselectProjectsRoot { 
  231.         WebWaitForVisible('.modules');
  232.     if (WebIsVisible('.test--btn-project-manager')) {
  233.         writeLog('Projects Root tile is visible for user');
  234.             WebBitmapCheck ('Projects Root tile visible', '.modules');
  235.         WebClick('.test--btn-project-manager');
  236.             WebBitmapCheckNavigator ('Projects_Root_checked');
  237.         return 1;
  238.     } else {
  239.         writeLog('Projects Root tile is not visible for user');
  240.             WebBitmapCheck ('Projects Root tile not visible', '.modules');
  241.         return 0; #ha egy teszteset erre futna, fgv hivasnal le kell kezelni, hogy ne probalkozzon tovabb az adott user erre epulo lepesekben
  242.     }
  243. }
  244.  
  245.  
  246. sub UIselectUsersRoot {
  247.         WebWaitForVisible('.modules');
  248.     if (WebIsVisible('.test--btn-user-manager')) {
  249.         writeLog('Users Root tile is visible for user');
  250.             WebBitmapCheck ('Users Root tile visible', '.modules');
  251.         WebClick('.test--btn-user-manager');
  252.             WebBitmapCheckNavigator ('Users_Root_checked');
  253.         return 1;
  254.     } else {
  255.         writeLog('Users Root tile is not visible for user');
  256.             WebBitmapCheck ('Users Root tile not visible', '.modules');
  257.         return 0; #ha egy teszteset erre futna, fgv hivasnal le kell kezelni, hogy ne probalkozzon tovabb az adott user erre epulo lepesekben
  258.     }
  259. }
  260.  
  261.  
  262. sub UIselectServersRoot {  
  263.         WebWaitForVisible('.modules'); 
  264.     if (WebIsVisible('.test--btn-server-manager')) {
  265.         writeLog('Servers Root tile is visible for user');
  266.             WebBitmapCheck ('Servers Root tile visible', '.modules');
  267.         WebClick('.test--btn-server-manager');
  268.             WebBitmapCheckNavigator ('Servers_Root_checked');
  269.         return 1;
  270.     } else {
  271.         writeLog('Servers Root tile is not visible for user');
  272.             WebBitmapCheck ('Servers Root tile not visible', '.modules');
  273.         return 0; #ha egy teszteset erre futna, fgv hivasnal le kell kezelni, hogy ne probalkozzon tovabb az adott user erre epulo lepesekben
  274.     }  
  275. }
  276.  
  277.  
  278. sub UIcreateProjectFolderFromNavigator {
  279.     my ($parent, $folderName) = @_;
  280.    
  281.     WebClick($parent);
  282.     if (WebIsVisible('.test--btn-add-asset')) {
  283.         writeLog('Plus button is visible for user');
  284.             WebBitmapCheckNavigator ('Plus button visible on Navigator');
  285.         WebClick('.test--btn-add-asset'); # Click + sign
  286.             WebFocus('.test--add-asset-wrap');
  287.         if (WebIsVisible('.test--item-create-folder')) {
  288.             writeLog('Create Project folder is visible for user');
  289.                 WebBitmapCheck ('Create Project folder visible in dropdown', '.add-asset--wrap .dropdown-base--content'); # +-ra megjeleno dropdown
  290.             WebClick('.test--item-create-folder');
  291.             if (defined $folderName) {
  292.                 UIhandleCreateProjectFolderDialog ($folderName); #ha folderName-mel hivjuk meg, letrehozza azt
  293.             } else {
  294.                 UIcloseCreateProjectFolderDialog (); #ha folderName nelkul hivjuk meg, bezarja a dialogot
  295.             }
  296.         } else {
  297.             writeLog('Create Project folder is not visible for user');
  298.                 WebBitmapCheck ('Create Project folder not visible in dropdown', '.add-asset--wrap .dropdown-base--content');
  299.         }
  300.     } else {
  301.         writeLog('Plus button is not visible for user');
  302.             WebBitmapCheckNavigator ('Plus button not visible on Navigator');          
  303. }
  304.  
  305.  
  306. sub UIcreateProjectFolderFromSummary {
  307.     my ($parent, $folderName) = @_;
  308.    
  309.     WebClick($parent);
  310.     if (WebIsVisible('.test--btn-create-folder')) {
  311.         writeLog('Create Project folder is visible for user');
  312.             WebBitmapCheckSummary ('Create Project folder visible on Summary');
  313.         WebClick('.test--btn-create-folder'); # Create folder gombra kattint a Summary-n   
  314.         if (defined $folderName) {
  315.             UIhandleCreateProjectFolderDialog ($folderName);
  316.         } else {
  317.             UIcloseCreateProjectFolderDialog ();
  318.         }
  319.     } else {
  320.         writeLog('Create Project folder is not visible for user');
  321.             WebBitmapCheckSummmary ('Create Project folder not visible on Summary');       
  322.     }
  323. }
  324.    
  325.    
  326. sub UIhandleCreateProjectFolderDialog {
  327.     my ($folderName) = @_;
  328.    
  329.         WebWaitForVisible('.test--dialog-wrap');
  330.     WebFocus('.test--input');
  331.         WebBitmapCheckDialog ('Create Project Folder');
  332.     WebSetValue('.test--input', $folderName);
  333.         WebBitmapCheckDialog ($folderName . ' is written');
  334.     WebClick('.test--btn-action');
  335.         WebCheckToast ($folderName . ' has been created');
  336.         WebBitmapCheckNavigator ($folderName . ' exists');
  337.     WebClick('.test--navigator-root');
  338. }
  339.  
  340.  
  341. sub UIcloseCreateProjectFolderDialog {
  342.         WebWaitForVisible('.test--dialog-wrap');
  343.         WebBitmapCheckDialog ('Create Project Folder');
  344.     WebClick('.test--btn-close-dialog');
  345. }
  346.  
  347.  
  348. sub UIimportProjectFromNavigator {
  349.     my ($parent, $fileName, $importAsName) = @_;
  350.    
  351.     WebClick($parent);
  352.     if (WebIsVisible('.test--btn-add-asset')) {
  353.         writeLog('Plus button is visible for user');
  354.             WebBitmapCheckNavigator ('Plus button visible on Navigator');
  355.         WebClick('.test--btn-add-asset'); # Click + sign
  356.             WebFocus('.test--add-asset-wrap');
  357.         if (WebIsVisible('.test--item-import')) {
  358.             writeLog('Import is visible for user');
  359.                 WebBitmapCheck ('Import visible in dropdown', '.add-asset--wrap .dropdown-base--content'); # +-ra megjeleno dropdown
  360.             WebClick('.test--item-import');
  361.             UIhandleImportProjectDialog ($fileName, $importAsName);
  362.         } else {
  363.             writeLog('Import is not visible for user');
  364.                 WebBitmapCheck ('Import not visible in dropdown', '.add-asset--wrap .dropdown-base--content');
  365.         }
  366.     } else {
  367.         writeLog('Plus button is not visible for user');
  368.             WebBitmapCheckNavigator ('Plus button not visible on Navigator');          
  369. }
  370.  
  371.  
  372. sub UIimportProjectFromSummary {
  373.     my ($parent, $fileName, $importAsName) = @_;
  374.    
  375.     WebClick($parent);
  376.     if (WebIsVisible('.test--btn-import')) {
  377.         writeLog('Import is visible for user');
  378.             WebBitmapCheckSummary ('Import visible on Summary');
  379.         WebClick('.test--btn-import'); # Import gombra kattint a Summary-n 
  380.         UIhandleImportProjectDialog ($fileName, $importAsName);
  381.     } else {
  382.         writeLog('Import is not visible for user');
  383.             WebBitmapCheckSummmary ('Import not visible on Summary');      
  384.     }
  385. }
  386.  
  387.  
  388. sub UIhandleImportProjectDialog {
  389.     my ($fileName, $importAsName) = @_;
  390.        
  391.         WebWaitForVisible('.test--dialog-wrap');
  392.     WebSelectResourceImportFile (catfile("$workfolder", $fileName));
  393.     WebClick('.test--input-resource-name');
  394.     WebSetValue('.test--input-resource-name', $importAsName);
  395.     WebClick('.test--btn-action');
  396.     WebWaitForToastToDisappear (); #Importing fajlnev... sarga toast nem erdekes kulonosebben
  397.         WebCheckToast ($fileName . ' imported'); # zold toast
  398.         WebBitmapCheckNavigator ($fileName . ' exists');
  399. }
  400.  
  401.  
  402. sub UIimportLibraryFromNavigator {
  403.     my ($parent, $fileName, $importAsName) = @_;
  404.    
  405.     WebClick($parent);
  406.     if (WebIsVisible('.test--btn-add-asset')) {
  407.         writeLog('Plus button is visible for user');
  408.             WebBitmapCheckNavigator ('Plus button visible on Navigator');
  409.         WebClick('.test--btn-add-asset'); # Click + sign
  410.             WebFocus('.test--add-asset-wrap');
  411.         if (WebIsVisible('.test--item-import')) {
  412.             writeLog('Import is visible for user');
  413.                 WebBitmapCheck ('Import visible in dropdown', '.add-asset--wrap .dropdown-base--content'); # +-ra megjeleno dropdown
  414.             WebClick('.test--item-import');
  415.             UIhandleImportLibraryDialog ($fileName, $importAsName);
  416.         } else {
  417.             writeLog('Import is not visible for user');
  418.                 WebBitmapCheck ('Import not visible in dropdown', '.add-asset--wrap .dropdown-base--content');
  419.         }
  420.     } else {
  421.         writeLog('Plus button is not visible for user');
  422.             WebBitmapCheckNavigator ('Plus button not visible on Navigator');          
  423. }
  424.  
  425.  
  426. sub UIimportLibraryFromSummary {
  427.     my ($parent, $fileName, $importAsName) = @_;
  428.    
  429.     WebClick($parent);
  430.     if (WebIsVisible('.test--btn-import')) {
  431.         writeLog('Import is visible for user');
  432.             WebBitmapCheckSummary ('Import visible on Summary');
  433.         WebClick('.test--btn-import'); # Import gombra kattint a Summary-n 
  434.         UIhandleImportLibraryDialog ($fileName, $importAsName);
  435.     } else {
  436.         writeLog('Import is not visible for user');
  437.             WebBitmapCheckSummmary ('Import not visible on Summary');      
  438.     }
  439. }
  440.  
  441.  
  442. sub UIhandleImportLibraryDialog {
  443.     my ($fileName, $importAsName) = @_;
  444.        
  445.         WebWaitForVisible('.test--dialog-wrap');
  446.     WebSelectResourceImportFile (catfile("$workfolder", $fileName));
  447.     WebClick('.test--input-resource-name');
  448.     WebSetValue('.test--input-resource-name', $importAsName);
  449.     WebClick('.test--btn-action');
  450.     WebWaitForToast ();
  451.     if (my $BIMServerMode == 'Free') {
  452.             WebCheckToast ('In BIMcloud Basic, libraries can be uploaded to the Libraries folder only.');
  453.         WebClick('.test--btn-close-dialog');
  454.             WebBitmapCheckNavigator ($fileName . ' does not exist');
  455.     } else {
  456.         WebCheckToast ($fileName . ' imported');
  457.         WebBitmapCheckNavigator ($fileName . ' exists');
  458.     }
  459. }
  460.  
  461.  
  462. sub UIlockProject {
  463.     my ($parent) = @_;
  464.    
  465.     WebClick($parent);
  466.         WebBitmapCheckNavigator ($parent . ' is selected');
  467.     WebClick('.test--btn-lock-unlock > .test--dropdown-btn');
  468.     WebClick('.test--item-lock');
  469.     WebWaitForToast ();
  470.         WebCheckToast ('Saved');
  471.     WebWaitForToastToDisappear ();
  472.         WebBitmapCheckSummary ($parent . ' is locked');
  473. }
  474.  
  475.  
  476. sub UImanualLibrarySnapshot {
  477.     my ($parent, $snapshotName) = @_;
  478.    
  479.     WebClick('.test--list-item-legacy_libraries_folder .test--btn-toggle-row');
  480.     WebClick($parent);
  481.     WebClick('.test--btn-tab-snapshots');
  482.     WebClick('.test--btn-create');
  483.     WebWaitForVisible('.test--dialog-wrap');
  484.     WebFocus('.test--input-snapshot-name');
  485.     WebSetValue('.test--input-snapshot-name', $snapshotName);
  486.     WebClick('.test--btn-action');
  487. }
  488.  
  489.  
  490. sub UIactivitiesSearch {
  491.     my ($parent, $searchItem) = @_;
  492.    
  493.     WebClick($parent);
  494.     WebClick('.test--btn-tab-activities');
  495.     WebWaitForVisible('.test--quicksearch-open');
  496.     WebClick('.test--panel-activities-panel .test--quicksearch-open');
  497.     WebWaitForVisible('.test--quicksearch-input');
  498.     WebFocus('.test--panel-activities-panel .test--quicksearch-input');
  499.     WebClick('.test--panel-activities-panel .test--quicksearch-input');
  500.     WebSetValue('.test--panel-activities-panel .test--quicksearch-input', $searchItem);
  501.     delay (3);
  502.         WebBitmapCheckDetailes ($searchItem . ' is searched');
  503.     WebClick('.test--panel-activities-panel .test--quicksearch-close');
  504.     delay (3);
  505. }
  506.  
  507.  
  508. sub UIactivitiesSorting {
  509.     my ($parent, $sortBy) = @_;
  510.    
  511.     WebClick($parent);
  512.     WebClick ('.test--btn-tab-activities');
  513.     WebClick('.test--panel-activities-panel');
  514.     WebClick($sortBy); #type szerint sorbarendezzuk
  515.     delay (3);
  516.         WebBitmapCheckDetailes ('Sorted by type');
  517. }
  518.  
  519.  
  520. sub UIactivitiesFilter {
  521.     my ($parent, $filter) = @_;
  522.    
  523.     WebClick($parent);
  524.     WebClick('.test--filter-type .test--dropdown-btn'); #type szerint szurunk
  525.     WebClick($filter); #Get Content-re
  526.         WebBitmapCheckDetailes ('Filtered by Get Content');
  527. #   delay (3);
  528.     WebWaitWhileVisible('.test--panel-activities-panel');
  529.     WebClick('.test--filter-type .test--dropdown-btn');
  530.     WebClick('.test--filter-type .test--dropdown-item:nth-child(1)'); #kilepunk a filterezesbol
  531. }
  532.  
  533.      
  534.      subEnd;
  535. }
  536.  
  537. sub onTestCaseError {
  538.     my %params = @_;
  539.  
  540.     UIlogout ();
  541. }
  542.  
  543.  
  544. #sub onTestCaseSuccess {
  545. #    my %params = @_;    
  546. #}
  547.  
  548.  
  549. #
  550. # Helper function to set up the test environment required by  all testcases
  551. #  
  552.  
  553.  
  554. ######### INTERNAL SUBS #########
  555. # Implement own subroutins this place
  556.  
  557. #selectWebUIElement ('Projects Root\Segg\Segg');
  558. #
  559. #sub selectWebUIElement {
  560. #   my ($path) = @_;
  561. #  
  562. #   my @elements = split /\\/, $path;
  563. #  
  564. #   for (my $i=0; $i < @elements; $i++) {
  565. #       my $element;
  566. #       $element = $elements[$i];  
  567. #      
  568. #       if ($i = 0) {
  569. #          
  570. #       } elsif (0 < $i < @elements) {
  571. #          
  572. #       } else {
  573. #          
  574. #       }
  575.  
  576. #   }
  577. #}
  578. }
  579. }
  580. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement