@Test public void should_support_property_sets_with_auto_generated_keys() { new SeleneseTest( Selenese.builder() .setHtmlTestsInClasspath( "create-auto-generated", "/settings/PropertySetsTest/auto-generated/create.html") .build()) .runOn(orchestrator); String[] keys = getProperty("sonar.autogenerated").split("[,]"); assertThat(getProperty("sonar.autogenerated." + keys[0] + ".value")).isEqualTo("FIRST"); assertThat(getProperty("sonar.autogenerated." + keys[1] + ".value")).isEqualTo("SECOND"); assertThat(getProperty("sonar.autogenerated." + keys[2] + ".value")).isEqualTo("THIRD"); new SeleneseTest( Selenese.builder() .setHtmlTestsInClasspath( "update-auto-generated", "/settings/PropertySetsTest/auto-generated/update.html") .build()) .runOn(orchestrator); keys = getProperty("sonar.autogenerated").split("[,]"); assertThat(getProperty("sonar.autogenerated." + keys[0] + ".value")).isEqualTo("FIRST"); assertThat(getProperty("sonar.autogenerated." + keys[1] + ".value")).isEqualTo("THIRD"); }
@Test public void manage_measure_filters() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "manage_measure_filters", "/measure/suite/measure_filters/save_with_special_characters.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); }
@Test public void copy_measure_filters() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "copy_measure_filters", "/measure/suite/measure_filters/copy_measure_filter.html", "/measure/suite/measure_filters/copy_uniqueness_of_name.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); }
@Test public void measure_filter_list_widget() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "measure_filter_list_widget", "/measure/suite/measure_filters/list_widget.html", "/measure/suite/measure_filters/list_widget_sort.html", "/measure/suite/measure_filters/list_widget_warning_if_missing_filter.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); }
@Test public void display_measure_filter_as_list() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "display_measure_filter_as_list", "/measure/suite/measure_filters/list_change_columns.html", "/measure/suite/measure_filters/list_delete_column.html", "/measure/suite/measure_filters/list_move_columns.html", "/measure/suite/measure_filters/list_sort_by_descending_name.html", "/measure/suite/measure_filters/list_sort_by_ncloc.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); }
/** SONAR-4700 */ @Test public void not_display_periods_selection_dropdown_on_first_analysis() { orchestrator.getServer().provisionProject(PROJECT_KEY, PROJECT_KEY); orchestrator.getServer().associateProjectToQualityProfile(PROJECT_KEY, "xoo", "empty"); orchestrator.executeBuild(SonarRunner.create(projectDir("shared/xoo-sample"))); // Use old way to execute Selenium because 'assertSelectOptions' action is not supported by // SeleneseTest orchestrator.executeSelenese( Selenese.builder() .setHtmlTestsInClasspath( "not-display-periods-selection-dropdown-on-first-analysis", "/measureHistory/DifferentialPeriodsTest/not-display-periods-selection-dropdown-on-dashboard.html") .build()); orchestrator.executeBuild(SonarRunner.create(projectDir("shared/xoo-sample"))); orchestrator.executeSelenese( Selenese.builder() .setHtmlTestsInClasspath( "display-periods-selection-dropdown-after-first-analysis", "/measureHistory/DifferentialPeriodsTest/display-periods-selection-dropdown-on-dashboard.html") .build()); }
/** SONAR-4099 */ @Test public void should_not_share_filter_when_user_have_no_sharing_permissions() { String user = "******"; createUser(user, "User Measure Filters without sharing permission"); try { // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese( Selenese.builder() .setHtmlTestsInClasspath( "should_not_share_filter_when_user_have_no_sharing_permissions", "/measure/suite/measure_filters/should-not-share-filter-when-user-have-no-sharing-permissions.html") .build()); } finally { deactivateUser(user); } }
@Test public void execute_measure_filters() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "execution_of_measure_filters", "/measure/suite/measure_filters/link_from_main_header.html", "/measure/suite/measure_filters/initial_search_form.html", "/measure/suite/measure_filters/search_for_projects.html", "/measure/suite/measure_filters/search_for_files.html", // SONAR-4195 "/measure/suite/measure_filters/search-by-key.html", "/measure/suite/measure_filters/search-by-name.html", "/measure/suite/measure_filters/empty_filter.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); }
/** SONAR-7093 */ @Test public void ensure_leak_period_defined_at_project_level_is_taken_into_account() throws Exception { orchestrator.getServer().provisionProject(PROJECT_KEY, PROJECT_KEY); // Set a global property and a project property to ensure project property is used setServerProperty(orchestrator, "sonar.timemachine.period1", "previous_analysis"); setServerProperty(orchestrator, PROJECT_KEY, "sonar.timemachine.period1", "30"); // Execute an analysis in the past to have a past snapshot without any issues orchestrator.getServer().associateProjectToQualityProfile(PROJECT_KEY, "xoo", "empty"); orchestrator.executeBuild( SonarRunner.create(projectDir("shared/xoo-sample")) .setProperty("sonar.projectDate", formatDate(addDays(new Date(), -15)))); // Second analysis -> issues will be created orchestrator .getServer() .restoreProfile(FileLocation.ofClasspath("/measureHistory/one-issue-per-line-profile.xml")); orchestrator .getServer() .associateProjectToQualityProfile(PROJECT_KEY, "xoo", "one-issue-per-line"); orchestrator.executeBuild(SonarRunner.create(projectDir("shared/xoo-sample"))); // Third analysis -> There's no new issue from previous analysis orchestrator.executeBuild(SonarRunner.create(projectDir("shared/xoo-sample"))); // Project should have 17 new issues for period 1 Resource newTechnicalDebt = orchestrator .getServer() .getWsClient() .find(ResourceQuery.createForMetrics(PROJECT_KEY, "violations").setIncludeTrends(true)); List<Measure> measures = newTechnicalDebt.getMeasures(); assertThat(measures.get(0).getVariation1()).isEqualTo(17); // Check on ui that it's possible to define leak period on project new SeleneseTest( Selenese.builder() .setHtmlTestsInClasspath( "define-leak-period-on-project", "/measureHistory/DifferentialPeriodsTest/define-leak-period-on-project.html") .build()) .runOn(orchestrator); }
@Test public void should_support_property_sets() { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "property-sets", "/settings/PropertySetsTest/property-sets/create.html", "/settings/PropertySetsTest/property-sets/delete.html", "/settings/PropertySetsTest/property-sets/reference.html", "/settings/PropertySetsTest/property-sets/all_types.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); // SSF-25 Check that the password has well be setted as now it does not appears in the html // source code String sonarDemoValue = getProperty("sonar.demo"); assertThat(getProperty("sonar.demo." + sonarDemoValue + ".password")).isEqualTo("abcde"); }
@Test public void share_measure_filters() { // SONAR-4099 String user = "******"; createUser(user, "User Measure Filters with sharing permission", "shareDashboard"); try { Selenese selenese = Selenese.builder() .setHtmlTestsInClasspath( "share_measure_filters", // SONAR-4469 "/measure/suite/measure_filters/should-unshare-filter-remove-other-filters-favourite.html") .build(); // Use the old runner because it fails with the new Selenium runner orchestrator.executeSelenese(selenese); } finally { deactivateUser(user); } }
private void seleniumSuite(String suiteName, String... tests) { Selenese selenese = Selenese.builder().setHtmlTestsInClasspath(suiteName, tests).build(); orchestrator.executeSelenese(selenese); }