aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/test/resources
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/test/resources')
-rw-r--r--tests/src/test/resources/analysis/BatchTest/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/multiline.xml12
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/no-server-analysis.json212
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/report-on-root-module.json880
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module-branch.json255
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module.json255
-rw-r--r--tests/src/test/resources/analysis/IssueJsonReportTest/report-on-sub-module.json238
-rw-r--r--tests/src/test/resources/analysis/IssuesModeTest/empty.xml7
-rw-r--r--tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line-empty.xml7
-rw-r--r--tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/analysis/IssuesModeTest/with-many-rules.xml32
-rw-r--r--tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line-xoo2.xml12
-rw-r--r--tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/analysis/SSLTest/README184
-rw-r--r--tests/src/test/resources/analysis/SSLTest/clientkeystore.jksbin0 -> 2260 bytes
-rw-r--r--tests/src/test/resources/analysis/SSLTest/clienttruststore.jksbin0 -> 971 bytes
-rw-r--r--tests/src/test/resources/analysis/SSLTest/openssl.cnf38
-rw-r--r--tests/src/test/resources/analysis/SSLTest/serverkeystore.jksbin0 -> 2258 bytes
-rw-r--r--tests/src/test/resources/analysis/SSLTest/servertruststore.jksbin0 -> 1109 bytes
-rw-r--r--tests/src/test/resources/analysis/SettingsEncryptionTest/sonar-secret.txt1
-rw-r--r--tests/src/test/resources/analysis/TempFolderTest/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_create.html99
-rw-r--r--tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_display_page.html89
-rw-r--r--tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_manage_project_creators.html109
-rw-r--r--tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-be-able-to-provision-project.html59
-rw-r--r--tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-not-be-able-to-provision-project.html59
-rw-r--r--tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/normal-user.html69
-rw-r--r--tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/profile-admin.html84
-rw-r--r--tests/src/test/resources/authorisation/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/dbCleaner/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications-with-deleted-project.html49
-rw-r--r--tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications_on_removed_file-expected.json25
-rw-r--r--tests/src/test/resources/duplication/CrossProjectDuplicationsTest/cross-project-duplications-viewer.html59
-rw-r--r--tests/src/test/resources/duplication/CrossProjectDuplicationsTest/duplications_show-expected.json32
-rw-r--r--tests/src/test/resources/duplication/CrossProjectDuplicationsTest/sources_lines_duplication-expected.json184
-rw-r--r--tests/src/test/resources/duplication/DuplicationsTest/duplications_show-expected.json26
-rw-r--r--tests/src/test/resources/duplication/DuplicationsTest/sources_lines_duplication-expected.json359
-rw-r--r--tests/src/test/resources/duplication/xoo-duplication-profile.xml12
-rw-r--r--tests/src/test/resources/exclusions/IssueExclusionsTest/with-many-rules.xml32
-rw-r--r--tests/src/test/resources/i18n/default-locale-is-english.html34
-rw-r--r--tests/src/test/resources/i18n/french-locale.html34
-rw-r--r--tests/src/test/resources/i18n/french-pack.html29
-rw-r--r--tests/src/test/resources/i18n/locale-with-france-country.html34
-rw-r--r--tests/src/test/resources/i18n/locale-with-swiss-country.html34
-rw-r--r--tests/src/test/resources/issue/CommonRulesTest/xoo-common-rules-profile.xml55
-rw-r--r--tests/src/test/resources/issue/CustomRulesTest/custom.xml12
-rw-r--r--tests/src/test/resources/issue/IssueActionTest/xoo-one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/issue/IssueBulkChangeTest/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/issue/IssueChangelogTest/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/issue/IssueCreationDateTest/no-rules.xml6
-rw-r--r--tests/src/test/resources/issue/IssueCreationDateTest/one-rule.xml11
-rw-r--r--tests/src/test/resources/issue/IssueCreationTest/override-profile-severity.xml11
-rw-r--r--tests/src/test/resources/issue/IssueCreationTest/with-custom-message.xml11
-rw-r--r--tests/src/test/resources/issue/IssueFilterExtensionTest/xoo-with-many-rules.xml32
-rw-r--r--tests/src/test/resources/issue/IssueFilterOnCommonRulesTest/xoo-common-rules-profile.xml55
-rw-r--r--tests/src/test/resources/issue/IssueFilterTest/with-many-rules.xml43
-rw-r--r--tests/src/test/resources/issue/IssuePurgeTest/with-many-rules.xml32
-rw-r--r--tests/src/test/resources/issue/IssueTrackingTest/one-issue-per-module-profile.xml12
-rw-r--r--tests/src/test/resources/issue/IssueWorkflowTest/xoo-one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/issue/NewIssuesMeasureTest/profile1.xml27
-rw-r--r--tests/src/test/resources/issue/NewIssuesMeasureTest/profile2.xml32
-rw-r--r--tests/src/test/resources/issue/issue-on-tag-foobar.xml18
-rw-r--r--tests/src/test/resources/issue/one-issue-per-file-profile.xml12
-rw-r--r--tests/src/test/resources/issue/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/issue/with-many-rules.xml42
-rw-r--r--tests/src/test/resources/logback-test.xml19
-rw-r--r--tests/src/test/resources/measure/ProjectDashboardTest/test_project_overview_after_first_analysis.html55
-rw-r--r--tests/src/test/resources/measure/ProjectMeasuresPageTest/should_display_measures_page.html49
-rw-r--r--tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_list_view.html69
-rw-r--r--tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_tree_view.html84
-rw-r--r--tests/src/test/resources/measure/one-issue-per-file.xml12
-rw-r--r--tests/src/test/resources/measure/one-issue-per-line-profile.xml12
-rw-r--r--tests/src/test/resources/measure/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/one-xoo-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/organization/IssueAssignTest/one-issue-per-file-profile.xml12
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_compare.html60
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_copy.html105
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_create.html105
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_delete.html110
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_changelog.html55
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_list.html69
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_exporters.html50
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_inheritance.html60
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_projects.html50
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_rules.html45
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_filter_by_language.html89
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_open_from_list.html54
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_rename.html105
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_restore.html75
-rw-r--r--tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_set_default.html95
-rw-r--r--tests/src/test/resources/projectAdministration/BackgroundTasksTest/should_not_display_failing_and_search_and_filter_elements_on_project_level_page.html80
-rw-r--r--tests/src/test/resources/projectAdministration/BulkDeletionTest/bulk-delete-filter-projects.html79
-rw-r--r--tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-delete-version.html75
-rw-r--r--tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-modify-version.html89
-rw-r--r--tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-deletion/project-deletion.html89
-rw-r--r--tests/src/test/resources/projectAdministration/ProjectPermissionsTest/test_project_permissions_page_shows_only_single_project.html75
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-metrics.html39
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-projects.html44
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-display-basic-set-of-metrics.html24
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-metrics.html69
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-projects.html54
-rw-r--r--tests/src/test/resources/projectComparison/ProjectComparisonTest/should-not-add-differential-metrics.html44
-rw-r--r--tests/src/test/resources/projectSearch/SearchProjectsTest/with-many-rules.xml43
-rw-r--r--tests/src/test/resources/qualityGate/QualityGateOnRatingMeasuresTest/with-many-rules.xml42
-rw-r--r--tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html94
-rw-r--r--tests/src/test/resources/qualityGate/QualityGateUiTest/should_display_quality_gates_page.html59
-rw-r--r--tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html64
-rw-r--r--tests/src/test/resources/qualityGate/notifications/email_configuration.html69
-rw-r--r--tests/src/test/resources/qualityModel/has-hello-tag.xml18
-rw-r--r--tests/src/test/resources/qualityModel/one-day-debt-per-file.xml12
-rw-r--r--tests/src/test/resources/qualityModel/one-issue-per-file.xml12
-rw-r--r--tests/src/test/resources/qualityModel/one-issue-per-line.xml12
-rw-r--r--tests/src/test/resources/qualityModel/with-many-rules.xml42
-rw-r--r--tests/src/test/resources/qualityModel/without-type-bug.xml26
-rw-r--r--tests/src/test/resources/qualityModel/without-type-code-smells.xml16
-rw-r--r--tests/src/test/resources/qualityModel/without-type-vulnerability.xml26
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_compare.html60
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_copy.html105
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_create.html100
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_delete.html105
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_changelog.html55
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_list.html69
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_exporters.html50
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_inheritance.html60
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_projects.html50
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_rules.html45
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_filter_by_language.html89
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_open_from_list.html54
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_rename.html105
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_restore.html70
-rw-r--r--tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_set_default.html90
-rw-r--r--tests/src/test/resources/serverSystem/HttpsTest/keystore.jksbin0 -> 2236 bytes
-rw-r--r--tests/src/test/resources/serverSystem/HttpsTest/keystore.jks.txt3
-rw-r--r--tests/src/test/resources/serverSystem/ServerSystemTest/derby-warning.html35
-rw-r--r--tests/src/test/resources/serverSystem/ServerSystemTest/hide-jdbc-settings.html50
-rw-r--r--tests/src/test/resources/serverSystem/ServerSystemTest/incompatible-plugin-1.0.jarbin0 -> 2188 bytes
-rw-r--r--tests/src/test/resources/serverSystem/ServerSystemTest/system_info.html84
-rw-r--r--tests/src/test/resources/serverSystem/ServerSystemTest/url_ending_by_jsp.html42
-rw-r--r--tests/src/test/resources/settings/SettingsTest/sonar-secret.txt1
-rw-r--r--tests/src/test/resources/sourceCode/EncodingTest/japanese_sources.html39
-rw-r--r--tests/src/test/resources/sourceCode/HighlightingTest/symbol-usages-highlighting.html49
-rw-r--r--tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v1.html55
-rw-r--r--tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v2.html54
-rw-r--r--tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting.html54
-rw-r--r--tests/src/test/resources/sourceCode/ProjectCodeTest/code_page_should_expand_root_dir.html30
-rw-r--r--tests/src/test/resources/sourceCode/ProjectCodeTest/permalink.html35
-rw-r--r--tests/src/test/resources/sourceCode/ProjectCodeTest/search.html60
-rw-r--r--tests/src/test/resources/sourceCode/ProjectCodeTest/test_project_code_page.html55
-rw-r--r--tests/src/test/resources/test/CoverageTest/it_coverage-expected.json84
-rw-r--r--tests/src/test/resources/test/CoverageTest/unit_test_coverage-expected.json84
-rw-r--r--tests/src/test/resources/test/CoverageTest/unit_test_coverage_no_condition-expected.json80
-rw-r--r--tests/src/test/resources/test/CoverageTest/ut_and_it_coverage-expected.json85
-rw-r--r--tests/src/test/resources/test/CoverageTrackingTest/covered_files-expected.json14
-rw-r--r--tests/src/test/resources/test/CoverageTrackingTest/tests-expected.json30
-rw-r--r--tests/src/test/resources/test/TestExecutionTest/expected.json31
-rw-r--r--tests/src/test/resources/ui/UiExtensionsTest/static-files.html24
-rw-r--r--tests/src/test/resources/updateCenter/UpdateCenterTest/update-center.properties62
-rw-r--r--tests/src/test/resources/updateCenter/installed-plugins.html64
-rw-r--r--tests/src/test/resources/user/BaseIdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html44
-rw-r--r--tests/src/test/resources/user/BaseIdentityProviderTest/display_unauthorized_page_when_authentication_failed.html39
-rw-r--r--tests/src/test/resources/user/BaseIdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html39
-rw-r--r--tests/src/test/resources/user/BaseIdentityProviderTest/fail_when_email_already_exists.html44
-rw-r--r--tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html144
-rw-r--r--tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details.html64
-rw-r--r--tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details2.html64
-rw-r--r--tests/src/test/resources/user/ExternalAuthenticationTest/system-info.html44
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/allow_users_to_sign_up.html109
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/force-authentication.html59
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/login_successful.html69
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/login_wrong_password.html45
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_login_when_not_enough_privilege.html59
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_direct_login.html59
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_indirect_login.html58
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_with_parameters_after_direct_login.html68
-rw-r--r--tests/src/test/resources/user/LocalAuthenticationTest/should_not_be_unlogged_when_going_to_login_page.html64
-rw-r--r--tests/src/test/resources/user/MyAccountPageTest/should_display_no_projects.html60
-rw-r--r--tests/src/test/resources/user/MyAccountPageTest/should_display_projects.html85
-rw-r--r--tests/src/test/resources/user/OAuth2IdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html44
-rw-r--r--tests/src/test/resources/user/OAuth2IdentityProviderTest/display_unauthorized_page_when_authentication_failed.html39
-rw-r--r--tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html39
-rw-r--r--tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_when_email_already_exists.html44
-rw-r--r--tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html95
-rw-r--r--tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html115
184 files changed, 10862 insertions, 0 deletions
diff --git a/tests/src/test/resources/analysis/BatchTest/one-issue-per-line.xml b/tests/src/test/resources/analysis/BatchTest/one-issue-per-line.xml
new file mode 100644
index 00000000000..7bb4ed5593a
--- /dev/null
+++ b/tests/src/test/resources/analysis/BatchTest/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/multiline.xml b/tests/src/test/resources/analysis/IssueJsonReportTest/multiline.xml
new file mode 100644
index 00000000000..778866e91c2
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/multiline.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>multiline</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>MultilineIssue</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/no-server-analysis.json b/tests/src/test/resources/analysis/IssueJsonReportTest/no-server-analysis.json
new file mode 100644
index 00000000000..4e1b18df6ee
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/no-server-analysis.json
@@ -0,0 +1,212 @@
+{
+ "components": [
+ {
+ "key": "sample"
+ },
+ {
+ "key": "sample:src/main/xoo/sample/Sample.xoo",
+ "moduleKey": "sample",
+ "path": "src/main/xoo/sample/Sample.xoo",
+ "status": "ADDED"
+ },
+ {
+ "key": "sample:src/main/xoo/sample",
+ "moduleKey": "sample",
+ "path": "src/main/xoo/sample"
+ }
+ ],
+ "issues": [
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 2,
+ "endOffset": 0,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 6,
+ "endOffset": 14,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 1,
+ "endOffset": 15,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 5,
+ "endOffset": 23,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 8,
+ "endOffset": 1,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 9,
+ "endOffset": 28,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 7,
+ "endOffset": 2,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 4,
+ "endOffset": 1,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 11,
+ "endOffset": 2,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 3,
+ "endOffset": 21,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 13,
+ "endOffset": 0,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 12,
+ "endOffset": 1,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 10,
+ "endOffset": 17,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "startOffset": 0,
+ "status": "OPEN"
+ }
+ ],
+ "rules": [
+ {
+ "key": "xoo:OneIssuePerLine",
+ "name": "One Issue Per Line",
+ "repository": "xoo",
+ "rule": "OneIssuePerLine"
+ }
+ ],
+ "users": [],
+ "version": "<SONAR_VERSION>"
+}
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/one-issue-per-line.xml b/tests/src/test/resources/analysis/IssueJsonReportTest/one-issue-per-line.xml
new file mode 100644
index 00000000000..7bb4ed5593a
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-root-module.json b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-root-module.json
new file mode 100644
index 00000000000..ad3c0218cdb
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-root-module.json
@@ -0,0 +1,880 @@
+{
+ "components": [
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a",
+ "path": "module_a"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1",
+ "path": "module_a1"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2",
+ "path": "module_a2"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b",
+ "path": "module_b"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1",
+ "path": "module_b1"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2",
+ "path": "module_b2"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "status": "SAME"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "status": "SAME"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "status": "SAME"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "status": "SAME"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a1"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a2"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/b1"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/b2"
+ }
+ ],
+ "issues": [
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 11,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 13,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 13,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 14,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 14,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 14,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 15,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 15,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 15,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 16,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 16,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 16,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 7,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 7,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 11,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 13,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 13,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 14,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 14,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 14,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 15,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 15,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 15,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 16,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 16,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 16,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 17,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 17,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 17,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 18,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 18,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 18,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 19,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 19,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 19,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 20,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 20,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 20,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a2:src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 21,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 21,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 21,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 7,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 11,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b1:src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 7,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_b:module_b2:src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 11,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "status": "OPEN"
+ }
+ ],
+ "rules": [
+ {
+ "key": "xoo:OneIssuePerLine",
+ "name": "One Issue Per Line",
+ "repository": "xoo",
+ "rule": "OneIssuePerLine"
+ }
+ ],
+ "users": [],
+ "version": "<SONAR_VERSION>"
+}
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module-branch.json b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module-branch.json
new file mode 100644
index 00000000000..aa066bbbf2f
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module-branch.json
@@ -0,0 +1,255 @@
+{
+ "components": [
+ {
+ "key": "sample:mybranch"
+ },
+ {
+ "key": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "moduleKey": "sample:mybranch",
+ "path": "src/main/xoo/sample/Sample.xoo",
+ "status": "CHANGED"
+ },
+ {
+ "key": "sample:mybranch:src/main/xoo/sample",
+ "moduleKey": "sample:mybranch",
+ "path": "src/main/xoo/sample"
+ }
+ ],
+ "issues": [
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "endOffset": 15,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "endOffset": 0,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "endOffset": 21,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "endOffset": 23,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "endOffset": 14,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "endOffset": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "endOffset": 28,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "endOffset": 17,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 13,
+ "endOffset": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 13,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 14,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 14,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 14,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 15,
+ "endOffset": 0,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 15,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 15,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 11,
+ "endOffset": 28,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:mybranch:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 7,
+ "endOffset": 28,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "startOffset": 0,
+ "status": "OPEN"
+ }
+ ],
+ "rules": [
+ {
+ "key": "xoo:OneIssuePerLine",
+ "name": "One Issue Per Line",
+ "repository": "xoo",
+ "rule": "OneIssuePerLine"
+ }
+ ],
+ "users": [],
+ "version": "<SONAR_VERSION>"
+}
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module.json b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module.json
new file mode 100644
index 00000000000..6c3aab91f02
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-single-module.json
@@ -0,0 +1,255 @@
+{
+ "components": [
+ {
+ "key": "sample"
+ },
+ {
+ "key": "sample:src/main/xoo/sample/Sample.xoo",
+ "moduleKey": "sample",
+ "path": "src/main/xoo/sample/Sample.xoo",
+ "status": "CHANGED"
+ },
+ {
+ "key": "sample:src/main/xoo/sample",
+ "moduleKey": "sample",
+ "path": "src/main/xoo/sample"
+ }
+ ],
+ "issues": [
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 11,
+ "endOffset": 28,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-02T00:00:00+0200",
+ "endLine": 7,
+ "endOffset": 28,
+ "isNew": true,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "endOffset": 15,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "endOffset": 0,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "endOffset": 21,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "endOffset": 23,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "endOffset": 14,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "endOffset": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "endOffset": 28,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "endOffset": 17,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 13,
+ "endOffset": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 13,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 14,
+ "endOffset": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 14,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 14,
+ "startOffset": 0,
+ "status": "OPEN"
+ },
+ {
+ "component": "sample:src/main/xoo/sample/Sample.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 15,
+ "endOffset": 0,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 15,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 15,
+ "startOffset": 0,
+ "status": "OPEN"
+ }
+ ],
+ "rules": [
+ {
+ "key": "xoo:OneIssuePerLine",
+ "name": "One Issue Per Line",
+ "repository": "xoo",
+ "rule": "OneIssuePerLine"
+ }
+ ],
+ "users": [],
+ "version": "<SONAR_VERSION>"
+}
diff --git a/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-sub-module.json b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-sub-module.json
new file mode 100644
index 00000000000..84a68c4d5a4
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssueJsonReportTest/report-on-sub-module.json
@@ -0,0 +1,238 @@
+{
+ "components": [
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "status": "SAME"
+ },
+ {
+ "key": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1",
+ "moduleKey": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1",
+ "path": "src/main/xoo/com/sonar/it/samples/modules/a1"
+ }
+ ],
+ "issues": [
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 1,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 1,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 1,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 2,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 2,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 2,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 3,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 3,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 3,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 4,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 4,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 4,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 5,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 5,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 5,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 6,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 6,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 6,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 7,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 7,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 7,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 8,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 8,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 8,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 9,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 9,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 9,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 10,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 10,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 10,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 11,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 11,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 11,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 12,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 12,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 12,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 13,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 13,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 13,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 14,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 14,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 14,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 15,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 15,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 15,
+ "status": "OPEN"
+ },
+ {
+ "component": "com.sonarsource.it.samples:multi-modules-sample:module_a:module_a1:src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo",
+ "creationDate": "2013-05-01T00:00:00+0200",
+ "endLine": 16,
+ "isNew": false,
+ "key": "<ISSUE_KEY>",
+ "line": 16,
+ "message": "This issue is generated on each line",
+ "rule": "xoo:OneIssuePerLine",
+ "severity": "MAJOR",
+ "startLine": 16,
+ "status": "OPEN"
+ }
+ ],
+ "rules": [
+ {
+ "key": "xoo:OneIssuePerLine",
+ "name": "One Issue Per Line",
+ "repository": "xoo",
+ "rule": "OneIssuePerLine"
+ }
+ ],
+ "users": [],
+ "version": "<SONAR_VERSION>"
+}
diff --git a/tests/src/test/resources/analysis/IssuesModeTest/empty.xml b/tests/src/test/resources/analysis/IssuesModeTest/empty.xml
new file mode 100644
index 00000000000..8bab61d6c85
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssuesModeTest/empty.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>empty</name>
+ <language>xoo</language>
+ <rules>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line-empty.xml b/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line-empty.xml
new file mode 100644
index 00000000000..0ba34f10dbd
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line-empty.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line.xml b/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line.xml
new file mode 100644
index 00000000000..7bb4ed5593a
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssuesModeTest/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/IssuesModeTest/with-many-rules.xml b/tests/src/test/resources/analysis/IssuesModeTest/with-many-rules.xml
new file mode 100644
index 00000000000..f3d0baf0616
--- /dev/null
+++ b/tests/src/test/resources/analysis/IssuesModeTest/with-many-rules.xml
@@ -0,0 +1,32 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line-xoo2.xml b/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line-xoo2.xml
new file mode 100644
index 00000000000..67215f91a52
--- /dev/null
+++ b/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line-xoo2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line-xoo2</name>
+ <language>xoo2</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo2</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line.xml b/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line.xml
new file mode 100644
index 00000000000..7bb4ed5593a
--- /dev/null
+++ b/tests/src/test/resources/analysis/MultiLanguageTest/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/SSLTest/README b/tests/src/test/resources/analysis/SSLTest/README
new file mode 100644
index 00000000000..fb535a907c6
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/README
@@ -0,0 +1,184 @@
+$ openssl req -config ./openssl.cnf -newkey rsa:2048 -nodes -keyform PEM -keyout ca.key -x509 -days 3650 -extensions certauth -outform PEM -out ca.cer
+Generating a 2048 bit RSA private key
+..............................................+++
+........................................................................................................+++
+writing new private key to 'ca.key'
+-----
+You are about to be asked to enter information that will be incorporated
+into your certificate request.
+What you are about to enter is what is called a Distinguished Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.
+-----
+Country [FR]:
+Locality [Poitiers]:
+Organization [SonarSource]:
+Common Name []:CA for SonarQube ITs
+
+$ openssl genrsa -out server.key 2048
+Generating RSA private key, 2048 bit long modulus
+........................+++
+............................+++
+e is 65537 (0x10001)
+
+$ openssl req -config ./openssl.cnf -new -key server.key -out server.req
+You are about to be asked to enter information that will be incorporated
+into your certificate request.
+What you are about to enter is what is called a Distinguished Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.
+-----
+Country [FR]:
+Locality [Poitiers]:
+Organization [SonarSource]:
+Common Name []:localhost
+
+$ openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extfile openssl.cnf -extensions server -days 3650 -outform PEM -out server.cer
+Signature ok
+subject=/C=FR/L=Poitiers/O=SonarSource/CN=localhost
+Getting CA Private Key
+
+$ openssl genrsa -out client.key 2048
+Generating RSA private key, 2048 bit long modulus
+...................................+++
+.....................................................+++
+e is 65537 (0x10001)
+
+$ openssl req -config ./openssl.cnf -new -key client.key -out client.req
+You are about to be asked to enter information that will be incorporated
+into your certificate request.
+What you are about to enter is what is called a Distinguished Name or a DN.
+There are quite a few fields but you can leave some blank
+For some fields there will be a default value,
+If you enter '.', the field will be left blank.
+-----
+Country [FR]:
+Locality [Poitiers]:
+Organization [SonarSource]:
+Common Name []:Julien Henry
+
+$ openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extfile openssl.cnf -extensions client -days 3650 -outform PEM -out client.cer
+Signature ok
+subject=/C=FR/L=Poitiers/O=SonarSource/CN=Julien Henry
+Getting CA Private Key
+
+$ openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
+Enter Export Password: clientp12pwd
+Verifying - Enter Export Password: clientp12pwd
+
+$ openssl pkcs12 -inkey server.key -in server.cer -export -out server.p12
+Enter Export Password: serverp12pwd
+Verifying - Enter Export Password: serverp12pwd
+
+$ keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore serverkeystore.jks
+Entrez le mot de passe du fichier de clés de destination : serverkeystorepwd
+Ressaisissez le nouveau mot de passe : serverkeystorepwd
+Entrez le mot de passe du fichier de clés source : serverp12pwd
+L'entrée de l'alias 1 a été importée.
+Commande d'import exécutée : 1 entrées importées, échec ou annulation de 0 entrées
+
+$ keytool -import -file ca.cer -keystore servertruststore.jks
+Entrez le mot de passe du fichier de clés : servertruststorepwd
+Ressaisissez le nouveau mot de passe : servertruststorepwd
+Propriétaire : CN=Test CA, O=SonarSource, L=Poitiers, C=FR
+Emetteur : CN=Test CA, O=SonarSource, L=Poitiers, C=FR
+Numéro de série : dabbebc7bce2fc6a
+Valide du : Wed Aug 31 14:42:15 CEST 2016 au : Sat Aug 29 14:42:15 CEST 2026
+Empreintes du certificat :
+ MD5: 69:36:AE:65:51:CD:F4:C3:83:77:DE:45:AE:49:01:1A
+ SHA1 : 77:92:45:84:18:FC:34:7A:2A:B0:EC:3D:22:48:15:1A:19:71:1D:B3
+ SHA256 : 99:03:89:84:6E:E3:D3:B7:12:2D:70:7E:49:88:49:41:52:1C:89:3A:9B:C0:83:D1:C5:44:D4:93:FB:42:C8:07
+ Nom de l'algorithme de signature : SHA1withRSA
+ Version : 3
+
+Extensions :
+
+#1: ObjectId: 2.5.29.35 Criticality=false
+AuthorityKeyIdentifier [
+KeyIdentifier [
+0000: 3A 61 C1 86 AD BE FC 15 82 B3 59 FF 00 28 5E F9 :a........Y..(^.
+0010: B5 5A 87 04 .Z..
+]
+[CN=Test CA, O=SonarSource, L=Poitiers, C=FR]
+SerialNumber: [ dabbebc7 bce2fc6a]
+]
+
+#2: ObjectId: 2.5.29.19 Criticality=false
+BasicConstraints:[
+ CA:true
+ PathLen:2147483647
+]
+
+#3: ObjectId: 2.5.29.31 Criticality=false
+CRLDistributionPoints [
+ [DistributionPoint:
+ [URIName: http://testca.local/ca.crl]
+]]
+
+#4: ObjectId: 2.5.29.14 Criticality=false
+SubjectKeyIdentifier [
+KeyIdentifier [
+0000: 3A 61 C1 86 AD BE FC 15 82 B3 59 FF 00 28 5E F9 :a........Y..(^.
+0010: B5 5A 87 04 .Z..
+]
+]
+
+Faire confiance à ce certificat ? [non] : oui
+Certificat ajouté au fichier de clés
+
+$ keytool -import -file server.cer -keystore clienttruststore.jks
+Entrez le mot de passe du fichier de clés : clienttruststorepwd
+Ressaisissez le nouveau mot de passe : clienttruststorepwd
+Propriétaire : CN=localhost, O=SonarSource, L=Poitiers, C=FR
+Emetteur : CN=Test CA, O=SonarSource, L=Poitiers, C=FR
+Numéro de série : 64
+Valide du : Wed Aug 31 14:45:30 CEST 2016 au : Thu Aug 31 14:45:30 CEST 2017
+Empreintes du certificat :
+ MD5: 40:52:F4:5E:67:C3:68:B6:00:7D:70:C0:1E:8E:75:2E
+ SHA1 : 83:3F:4F:AC:4E:E6:F4:06:14:01:E6:5B:F2:63:34:94:68:12:8C:3A
+ SHA256 : 7C:03:9A:CA:0D:B5:57:A5:66:56:75:09:23:45:9E:D5:CC:6C:72:14:0B:4B:9B:E8:29:3F:78:4C:9F:D6:77:E2
+ Nom de l'algorithme de signature : SHA256withRSA
+ Version : 3
+
+Extensions :
+
+#1: ObjectId: 2.5.29.19 Criticality=false
+BasicConstraints:[
+ CA:false
+ PathLen: undefined
+]
+
+#2: ObjectId: 2.5.29.31 Criticality=false
+CRLDistributionPoints [
+ [DistributionPoint:
+ [URIName: http://testca.local/ca.crl]
+]]
+
+#3: ObjectId: 2.5.29.37 Criticality=false
+ExtendedKeyUsages [
+ serverAuth
+]
+
+#4: ObjectId: 2.5.29.15 Criticality=false
+KeyUsage [
+ DigitalSignature
+ Key_Encipherment
+ Data_Encipherment
+]
+
+#5: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
+NetscapeCertType [
+ SSL server
+]
+
+Faire confiance à ce certificat ? [non] : oui
+Certificat ajouté au fichier de clés
+
+$ keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -destkeystore clientkeystore.jks
+Entrez le mot de passe du fichier de clés de destination : clientp12pwd
+Ressaisissez le nouveau mot de passe : clientp12pwd
+Entrez le mot de passe du fichier de clés source : clientp12pwd
+L'entrée de l'alias 1 a été importée.
+Commande d'import exécutée : 1 entrées importées, échec ou annulation de 0 entrées
diff --git a/tests/src/test/resources/analysis/SSLTest/clientkeystore.jks b/tests/src/test/resources/analysis/SSLTest/clientkeystore.jks
new file mode 100644
index 00000000000..653f3c7f093
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/clientkeystore.jks
Binary files differ
diff --git a/tests/src/test/resources/analysis/SSLTest/clienttruststore.jks b/tests/src/test/resources/analysis/SSLTest/clienttruststore.jks
new file mode 100644
index 00000000000..2529245e1c6
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/clienttruststore.jks
Binary files differ
diff --git a/tests/src/test/resources/analysis/SSLTest/openssl.cnf b/tests/src/test/resources/analysis/SSLTest/openssl.cnf
new file mode 100644
index 00000000000..4a5148fd4d7
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/openssl.cnf
@@ -0,0 +1,38 @@
+[ req ]
+default_md = sha1
+distinguished_name = req_distinguished_name
+
+[ req_distinguished_name ]
+countryName = Country
+countryName_default = FR
+countryName_min = 2
+countryName_max = 2
+localityName = Locality
+localityName_default = Poitiers
+organizationName = Organization
+organizationName_default = SonarSource
+commonName = Common Name
+commonName_max = 64
+
+[ certauth ]
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer:always
+basicConstraints = CA:true
+crlDistributionPoints = @crl
+
+[ server ]
+basicConstraints = CA:FALSE
+keyUsage = digitalSignature, keyEncipherment, dataEncipherment
+extendedKeyUsage = serverAuth
+nsCertType = server
+crlDistributionPoints = @crl
+
+[ client ]
+basicConstraints = CA:FALSE
+keyUsage = digitalSignature, keyEncipherment, dataEncipherment
+extendedKeyUsage = clientAuth
+nsCertType = client
+crlDistributionPoints = @crl
+
+[ crl ]
+URI=http://testca.local/ca.crl \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/SSLTest/serverkeystore.jks b/tests/src/test/resources/analysis/SSLTest/serverkeystore.jks
new file mode 100644
index 00000000000..319c899278a
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/serverkeystore.jks
Binary files differ
diff --git a/tests/src/test/resources/analysis/SSLTest/servertruststore.jks b/tests/src/test/resources/analysis/SSLTest/servertruststore.jks
new file mode 100644
index 00000000000..a3aee3b8a9d
--- /dev/null
+++ b/tests/src/test/resources/analysis/SSLTest/servertruststore.jks
Binary files differ
diff --git a/tests/src/test/resources/analysis/SettingsEncryptionTest/sonar-secret.txt b/tests/src/test/resources/analysis/SettingsEncryptionTest/sonar-secret.txt
new file mode 100644
index 00000000000..65b98c522da
--- /dev/null
+++ b/tests/src/test/resources/analysis/SettingsEncryptionTest/sonar-secret.txt
@@ -0,0 +1 @@
+0PZz+G+f8mjr3sPn4+AhHg== \ No newline at end of file
diff --git a/tests/src/test/resources/analysis/TempFolderTest/one-issue-per-line.xml b/tests/src/test/resources/analysis/TempFolderTest/one-issue-per-line.xml
new file mode 100644
index 00000000000..7bb4ed5593a
--- /dev/null
+++ b/tests/src/test/resources/analysis/TempFolderTest/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_create.html b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_create.html
new file mode 100644
index 00000000000..0e67e0f4fab
--- /dev/null
+++ b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_create.html
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>root-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>root-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>name=commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/permission_templates</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.page-actions button</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.page-actions button</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#permission-template-name</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>css=#permission-template-name</td>
+ <td>Custom</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>css=#permission-template-description</td>
+ <td>Description</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>css=#permission-template-project-key-pattern</td>
+ <td>.*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=#permission-template-submit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=tr[data-name=&quot;Custom&quot;]</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>css=tr[data-name=&quot;Custom&quot;] .js-name</td>
+ <td>*Custom*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>css=tr[data-name=&quot;Custom&quot;] .js-description</td>
+ <td>*Description*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>css=tr[data-name=&quot;Custom&quot;] .js-project-key-pattern</td>
+ <td>*.*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_display_page.html b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_display_page.html
new file mode 100644
index 00000000000..8d9640f25b6
--- /dev/null
+++ b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_display_page.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_display_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/permission_templates</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=tr[data-id=&quot;default_template&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=tr[data-id=&quot;default_template&quot;] .js-name</td>
+ <td>*Default template*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=tr[data-id=&quot;default_template&quot;] .js-defaults</td>
+ <td>*Projects*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=tr[data-id=&quot;default_template&quot;] .js-description</td>
+ <td>*This permission template will be used*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=td[data-permission=&quot;user&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=td[data-permission=&quot;codeviewer&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=td[data-permission=&quot;issueadmin&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=td[data-permission=&quot;admin&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=td[data-permission=&quot;scan&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_manage_project_creators.html b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_manage_project_creators.html
new file mode 100644
index 00000000000..3d1c172a783
--- /dev/null
+++ b/tests/src/test/resources/authorisation/PermissionTemplatesPageTest/should_manage_project_creators.html
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_manage_project_creators</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>name=commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/permission_templates</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=td[data-permission=&quot;user&quot;]</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=td[data-permission=&quot;user&quot;] .js-update-users</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#grant-to-project-creators</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>css=#grant-to-project-creators:not(:checked)</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=#grant-to-project-creators</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.js-modal-close</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=td[data-permission=&quot;user&quot;] .js-project-creators</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=td[data-permission=&quot;user&quot;] .js-update-users</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#grant-to-project-creators</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>css=#grant-to-project-creators:checked</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=#grant-to-project-creators</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.js-modal-close</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=td[data-permission=&quot;user&quot;] .js-project-creators</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-be-able-to-provision-project.html b/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-be-able-to-provision-project.html
new file mode 100644
index 00000000000..c5db3b4898a
--- /dev/null
+++ b/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-be-able-to-provision-project.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>user-cannot-administrate-profile</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-with-provisioning</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/projects_admin</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#projects-type__ALL</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>css=.page-actions button</td>
+ <td>*Create Project*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-not-be-able-to-provision-project.html b/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-not-be-able-to-provision-project.html
new file mode 100644
index 00000000000..270daf67cd9
--- /dev/null
+++ b/tests/src/test/resources/authorisation/ProvisioningPermissionTest/should-not-be-able-to-provision-project.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>user-cannot-administrate-profile</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-without-provisioning</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/projects_admin</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#projects-type__ALL</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>css=.page-actions button</td>
+ <td>*Create Project*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/normal-user.html b/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/normal-user.html
new file mode 100644
index 00000000000..b9190a27027
--- /dev/null
+++ b/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/normal-user.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>user-cannot-administrate-profile</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>not_profileadm</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>userpwd</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;foo&quot;]</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;foo&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*foo*</td>
+ </tr>
+ <tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.js-change-parent</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/profile-admin.html b/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/profile-admin.html
new file mode 100644
index 00000000000..86d6b26ece8
--- /dev/null
+++ b/tests/src/test/resources/authorisation/QualityProfileAdminPermissionTest/profile-admin.html
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>user-can-administrate-profile</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>profileadm</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>papwd</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;foo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;foo&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*foo*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.js-change-parent</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/project/quality_profiles?id=sample</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Quality Profiles*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/authorisation/one-issue-per-line-profile.xml b/tests/src/test/resources/authorisation/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..521adc7e06f
--- /dev/null
+++ b/tests/src/test/resources/authorisation/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/dbCleaner/one-issue-per-line-profile.xml b/tests/src/test/resources/dbCleaner/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..2006b6fb365
--- /dev/null
+++ b/tests/src/test/resources/dbCleaner/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications-with-deleted-project.html b/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications-with-deleted-project.html
new file mode 100644
index 00000000000..37a48368f83
--- /dev/null
+++ b/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications-with-deleted-project.html
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>duplications-with-deleted-project</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">duplications-with-deleted-project</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=duplicate-project%3Asrc%2Fmain%2Fxoo%2Fsample%2FFile1.xoo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.source-viewer</td>
+ <td>*src/main/xoo/sample/File1.xoo*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.source-table</td>
+ <td>*File1*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.source-line-duplicated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.bubble-popup</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>css=.bubble-popup .alert</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications_on_removed_file-expected.json b/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications_on_removed_file-expected.json
new file mode 100644
index 00000000000..37f0e402120
--- /dev/null
+++ b/tests/src/test/resources/duplication/CrossProjectDuplicationsOnRemoveFileTest/duplications_on_removed_file-expected.json
@@ -0,0 +1,25 @@
+{
+ "duplications": [
+ {
+ "blocks": [
+ {
+ "from": 9,
+ "size": 27
+ },
+ {
+ "from": 9,
+ "size": 27,
+ "_ref": "1"
+ }
+ ]
+ }
+ ],
+ "files": {
+ "1": {
+ "key": "duplicate-project:src/main/xoo/sample/File1.xoo",
+ "name": "src/main/xoo/sample/File1.xoo",
+ "project": "duplicate-project",
+ "projectName": "duplicate-project"
+ }
+ }
+}
diff --git a/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/cross-project-duplications-viewer.html b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/cross-project-duplications-viewer.html
new file mode 100644
index 00000000000..689594fdbb1
--- /dev/null
+++ b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/cross-project-duplications-viewer.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>cross-project-duplications-viewer</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">cross-project-duplications-viewer</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=duplicate-project%3Asrc%2Fmain%2Fxoo%2Fsample%2FFile1.xoo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.source-viewer-header</td>
+ <td>*75.0%*</td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line-duplicated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=[data-line-number='3']</td>
+ <td>*File1*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.source-line-duplicated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.bubble-popup</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.bubble-popup</td>
+ <td>glob:*origin-project*File1.xoo*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/duplications_show-expected.json b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/duplications_show-expected.json
new file mode 100644
index 00000000000..a9b0c623f53
--- /dev/null
+++ b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/duplications_show-expected.json
@@ -0,0 +1,32 @@
+{
+ "duplications": [
+ {
+ "blocks": [
+ {
+ "from": 9,
+ "size": 27,
+ "_ref": "1"
+ },
+ {
+ "from": 9,
+ "size": 27,
+ "_ref": "2"
+ }
+ ]
+ }
+ ],
+ "files": {
+ "2": {
+ "key": "origin-project:src/main/xoo/sample/File1.xoo",
+ "name": "src/main/xoo/sample/File1.xoo",
+ "project": "origin-project",
+ "projectName": "origin-project"
+ },
+ "1": {
+ "key": "duplicate-project:src/main/xoo/sample/File1.xoo",
+ "name": "src/main/xoo/sample/File1.xoo",
+ "project": "duplicate-project",
+ "projectName": "duplicate-project"
+ }
+ }
+}
diff --git a/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/sources_lines_duplication-expected.json b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/sources_lines_duplication-expected.json
new file mode 100644
index 00000000000..0ce4c68a243
--- /dev/null
+++ b/tests/src/test/resources/duplication/CrossProjectDuplicationsTest/sources_lines_duplication-expected.json
@@ -0,0 +1,184 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "package sample;",
+ "duplicated": false
+ },
+ {
+ "line": 2,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 3,
+ "code": "public class File1 {",
+ "duplicated": false
+ },
+ {
+ "line": 4,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 5,
+ "code": " public File1() {",
+ "duplicated": false
+ },
+ {
+ "line": 6,
+ "code": " }",
+ "duplicated": false
+ },
+ {
+ "line": 7,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 8,
+ "code": " public void test() {",
+ "duplicated": false
+ },
+ {
+ "line": 9,
+ "code": " char[] charList = new char[30];",
+ "duplicated": true
+ },
+ {
+ "line": 10,
+ "code": " for (int i = 0; i &lt; 10; i++) {",
+ "duplicated": true
+ },
+ {
+ "line": 11,
+ "code": " charList[i] = 'a';",
+ "duplicated": true
+ },
+ {
+ "line": 12,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 13,
+ "code": " for (int i = 0; i &lt; 10; i++) {",
+ "duplicated": true
+ },
+ {
+ "line": 14,
+ "code": " charList[i] = 'a';",
+ "duplicated": true
+ },
+ {
+ "line": 15,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 16,
+ "code": " int intergerToBeIncremented = 0;",
+ "duplicated": true
+ },
+ {
+ "line": 17,
+ "code": " while (intergerToBeIncremented &lt; 100) {",
+ "duplicated": true
+ },
+ {
+ "line": 18,
+ "code": " intergerToBeIncremented++;",
+ "duplicated": true
+ },
+ {
+ "line": 19,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 20,
+ "code": " int intergerToBeIncremented2 = 0;",
+ "duplicated": true
+ },
+ {
+ "line": 21,
+ "code": " while (intergerToBeIncremented2 &lt; 100) {",
+ "duplicated": true
+ },
+ {
+ "line": 22,
+ "code": " intergerToBeIncremented2++;",
+ "duplicated": true
+ },
+ {
+ "line": 23,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 24,
+ "code": " String temp = \"\";",
+ "duplicated": true
+ },
+ {
+ "line": 25,
+ "code": " for (int i=0; i&lt;10; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 26,
+ "code": " temp += \"say something\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 27,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 28,
+ "code": " for (int i=0; i&lt;20; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 29,
+ "code": " temp += \"say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 30,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 31,
+ "code": " for (int i=0; i&lt;30; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 32,
+ "code": " temp += \"always say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 33,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 34,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 35,
+ "code": "}",
+ "duplicated": true
+ },
+ {
+ "line": 36,
+ "code": "",
+ "duplicated": false
+ }
+ ]
+}
diff --git a/tests/src/test/resources/duplication/DuplicationsTest/duplications_show-expected.json b/tests/src/test/resources/duplication/DuplicationsTest/duplications_show-expected.json
new file mode 100644
index 00000000000..83b69f2be1d
--- /dev/null
+++ b/tests/src/test/resources/duplication/DuplicationsTest/duplications_show-expected.json
@@ -0,0 +1,26 @@
+{
+ "duplications": [
+ {
+ "blocks": [
+ {
+ "from": 9,
+ "size": 29,
+ "_ref": "1"
+ },
+ {
+ "from": 40,
+ "size": 31,
+ "_ref": "1"
+ }
+ ]
+ }
+ ],
+ "files": {
+ "1": {
+ "key": "file-duplications:src/main/xoo/duplicated_lines_within_same_file/DuplicatedLinesInSameFile.xoo",
+ "name": "src/main/xoo/duplicated_lines_within_same_file/DuplicatedLinesInSameFile.xoo",
+ "project": "file-duplications",
+ "projectName": "file-duplications"
+ }
+ }
+}
diff --git a/tests/src/test/resources/duplication/DuplicationsTest/sources_lines_duplication-expected.json b/tests/src/test/resources/duplication/DuplicationsTest/sources_lines_duplication-expected.json
new file mode 100644
index 00000000000..f6ccc926f29
--- /dev/null
+++ b/tests/src/test/resources/duplication/DuplicationsTest/sources_lines_duplication-expected.json
@@ -0,0 +1,359 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "package duplicated_lines_within_same_file;",
+ "duplicated": false
+ },
+ {
+ "line": 2,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 3,
+ "code": "public class DuplicatedLinesInSameFile {",
+ "duplicated": false
+ },
+ {
+ "line": 4,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 5,
+ "code": " public DuplicatedLinesInSameFile() {",
+ "duplicated": false
+ },
+ {
+ "line": 6,
+ "code": " }",
+ "duplicated": false
+ },
+ {
+ "line": 7,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 8,
+ "code": " public void duplicatedMethodInSameFile1() {",
+ "duplicated": false
+ },
+ {
+ "line": 9,
+ "code": " String temp = \"\";",
+ "duplicated": true
+ },
+ {
+ "line": 10,
+ "code": " for (int i=0; i&lt;10; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 11,
+ "code": " temp += \"say something\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 12,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 13,
+ "code": " for (int i=0; i&lt;20; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 14,
+ "code": " temp += \"say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 15,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 16,
+ "code": " for (int i=0; i&lt;30; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 17,
+ "code": " temp += \"always say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 18,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 19,
+ "code": " for (int i=0; i&lt;40; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 20,
+ "code": " temp += \"really nothing to say \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 21,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 22,
+ "code": " for (int i=0; i&lt;50; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 23,
+ "code": " temp += \"really really nothing to say \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 24,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 25,
+ "code": " for (int i=0; i&lt;60; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 26,
+ "code": " temp += \".. \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 27,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 28,
+ "code": " for (int i=0; i&lt;70; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 29,
+ "code": " temp += \"you say something? \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 30,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 31,
+ "code": " for (int i=0; i&lt;80; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 32,
+ "code": " temp += \"ah no...\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 33,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 34,
+ "code": " for (int i=0; i&lt;90; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 35,
+ "code": " temp += \"bye\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 36,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 37,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 38,
+ "code": "",
+ "duplicated": false
+ },
+ {
+ "line": 39,
+ "code": " public void duplicatedMethodInSameFile2() {",
+ "duplicated": false
+ },
+ {
+ "line": 40,
+ "code": " String temp = \"\";",
+ "duplicated": true
+ },
+ {
+ "line": 41,
+ "code": " for (int i=0; i&lt;10; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 42,
+ "code": " temp += \"say something\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 43,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 44,
+ "code": " for (int i=0; i&lt;20; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 45,
+ "code": " temp += \"say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 46,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 47,
+ "code": " for (int i=0; i&lt;30; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 48,
+ "code": " temp += \"always say nothing\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 49,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 50,
+ "code": " for (int i=0; i&lt;40; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 51,
+ "code": " temp += \"really nothing to say \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 52,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 53,
+ "code": " for (int i=0; i&lt;50; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 54,
+ "code": " temp += \"really really nothing to say \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 55,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 56,
+ "code": " for (int i=0; i&lt;60; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 57,
+ "code": " temp += \".. \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 58,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 59,
+ "code": " for (int i=0; i&lt;70; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 60,
+ "code": " temp += \"you say something? \"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 61,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 62,
+ "code": " for (int i=0; i&lt;80; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 63,
+ "code": " temp += \"ah no...\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 64,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 65,
+ "code": " for (int i=0; i&lt;90; i++){",
+ "duplicated": true
+ },
+ {
+ "line": 66,
+ "code": " temp += \"bye\"+i;",
+ "duplicated": true
+ },
+ {
+ "line": 67,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 68,
+ "code": " }",
+ "duplicated": true
+ },
+ {
+ "line": 69,
+ "code": "",
+ "duplicated": true
+ },
+ {
+ "line": 70,
+ "code": "}",
+ "duplicated": true
+ },
+ {
+ "line": 71,
+ "code": "",
+ "duplicated": false
+ }
+ ]
+}
diff --git a/tests/src/test/resources/duplication/xoo-duplication-profile.xml b/tests/src/test/resources/duplication/xoo-duplication-profile.xml
new file mode 100644
index 00000000000..999b64a8251
--- /dev/null
+++ b/tests/src/test/resources/duplication/xoo-duplication-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>xoo-duplication-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>DuplicatedBlocks</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/exclusions/IssueExclusionsTest/with-many-rules.xml b/tests/src/test/resources/exclusions/IssueExclusionsTest/with-many-rules.xml
new file mode 100644
index 00000000000..f3d0baf0616
--- /dev/null
+++ b/tests/src/test/resources/exclusions/IssueExclusionsTest/with-many-rules.xml
@@ -0,0 +1,32 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/i18n/default-locale-is-english.html b/tests/src/test/resources/i18n/default-locale-is-english.html
new file mode 100644
index 00000000000..978ceaa382e
--- /dev/null
+++ b/tests/src/test/resources/i18n/default-locale-is-english.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>default_locale_is_english</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">default_locale_is_english</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index?id=sample&name=Dashboard&locale=foo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>regexp:.*Jan.*|.*Feb.*|.*Mar.*|.*Apr.*|.*May.*|.*Jun.*|.*Jul.*|.*Aug.*|.*Sep.*|.*Oct.*|.*Nov.*|.*Dec.*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*0.0%*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/i18n/french-locale.html b/tests/src/test/resources/i18n/french-locale.html
new file mode 100644
index 00000000000..389f9e04ec4
--- /dev/null
+++ b/tests/src/test/resources/i18n/french-locale.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>french</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index?id=sample&name=Dashboard&locale=fr</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>regexp:.*jan.*|.*fév.*|.*mar.*|.*avr.*|.*mai.*|.*juin.*|.*juil.*|.*août.*|.*sept.*|.*oct.*|.*nov.*|.*déc.*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*0,0%*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/i18n/french-pack.html b/tests/src/test/resources/i18n/french-pack.html
new file mode 100644
index 00000000000..3f801c9a6ec
--- /dev/null
+++ b/tests/src/test/resources/i18n/french-pack.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>french-pack</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french-pack</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/?locale=fr</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.navbar</td>
+ <td>glob:*Se connecter*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/i18n/locale-with-france-country.html b/tests/src/test/resources/i18n/locale-with-france-country.html
new file mode 100644
index 00000000000..e84051475eb
--- /dev/null
+++ b/tests/src/test/resources/i18n/locale-with-france-country.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>french-france</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french-france</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index?id=sample&name=Dashboard&locale=fr-FR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>regexp:.*jan.*|.*fév.*|.*mar.*|.*avr.*|.*mai.*|.*juin.*|.*juil.*|.*août.*|.*sept.*|.*oct.*|.*nov.*|.*déc.*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*0,0%*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/i18n/locale-with-swiss-country.html b/tests/src/test/resources/i18n/locale-with-swiss-country.html
new file mode 100644
index 00000000000..be1453e002f
--- /dev/null
+++ b/tests/src/test/resources/i18n/locale-with-swiss-country.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>french-switzerland</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french-switzerland</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index?id=sample&name=Dashboard&locale=fr-CH</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>regexp:.*jan.*|.*fév.*|.*mar.*|.*avr.*|.*mai.*|.*juin.*|.*juil.*|.*août.*|.*sept.*|.*oct.*|.*nov.*|.*déc.*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*0.0%*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/issue/CommonRulesTest/xoo-common-rules-profile.xml b/tests/src/test/resources/issue/CommonRulesTest/xoo-common-rules-profile.xml
new file mode 100644
index 00000000000..9803527b94f
--- /dev/null
+++ b/tests/src/test/resources/issue/CommonRulesTest/xoo-common-rules-profile.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>xoo-common-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>DuplicatedBlocks</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientBranchCoverage</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumBranchCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientCommentDensity</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumCommentDensity</key>
+ <value>90.0</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientLineCoverage</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumLineCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>FailedUnitTests</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>SkippedUnitTests</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/CustomRulesTest/custom.xml b/tests/src/test/resources/issue/CustomRulesTest/custom.xml
new file mode 100644
index 00000000000..b04d126115d
--- /dev/null
+++ b/tests/src/test/resources/issue/CustomRulesTest/custom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>Custom</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>MyCustomRule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/issue/IssueActionTest/xoo-one-issue-per-line-profile.xml b/tests/src/test/resources/issue/IssueActionTest/xoo-one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..608f80cae96
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueActionTest/xoo-one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>xoo-one-issue-per-line-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueBulkChangeTest/one-issue-per-line-profile.xml b/tests/src/test/resources/issue/IssueBulkChangeTest/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..365aa896a73
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueBulkChangeTest/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueChangelogTest/one-issue-per-line-profile.xml b/tests/src/test/resources/issue/IssueChangelogTest/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..365aa896a73
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueChangelogTest/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueCreationDateTest/no-rules.xml b/tests/src/test/resources/issue/IssueCreationDateTest/no-rules.xml
new file mode 100644
index 00000000000..62ec52d9d10
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueCreationDateTest/no-rules.xml
@@ -0,0 +1,6 @@
+<profile>
+ <name>creation-date-quality-profile</name>
+ <language>xoo</language>
+ <rules>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueCreationDateTest/one-rule.xml b/tests/src/test/resources/issue/IssueCreationDateTest/one-rule.xml
new file mode 100644
index 00000000000..c1d7d44f02c
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueCreationDateTest/one-rule.xml
@@ -0,0 +1,11 @@
+<profile>
+ <name>creation-date-quality-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueCreationTest/override-profile-severity.xml b/tests/src/test/resources/issue/IssueCreationTest/override-profile-severity.xml
new file mode 100644
index 00000000000..d048760be60
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueCreationTest/override-profile-severity.xml
@@ -0,0 +1,11 @@
+<profile>
+ <name>override-profile-severity</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBlockerIssuePerFile</key>
+ <priority>INFO</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueCreationTest/with-custom-message.xml b/tests/src/test/resources/issue/IssueCreationTest/with-custom-message.xml
new file mode 100644
index 00000000000..323e50985cd
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueCreationTest/with-custom-message.xml
@@ -0,0 +1,11 @@
+<profile>
+ <name>with-custom-message</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>CustomMessage</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueFilterExtensionTest/xoo-with-many-rules.xml b/tests/src/test/resources/issue/IssueFilterExtensionTest/xoo-with-many-rules.xml
new file mode 100644
index 00000000000..a08c9cdd246
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueFilterExtensionTest/xoo-with-many-rules.xml
@@ -0,0 +1,32 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueFilterOnCommonRulesTest/xoo-common-rules-profile.xml b/tests/src/test/resources/issue/IssueFilterOnCommonRulesTest/xoo-common-rules-profile.xml
new file mode 100644
index 00000000000..9803527b94f
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueFilterOnCommonRulesTest/xoo-common-rules-profile.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>xoo-common-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>DuplicatedBlocks</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientBranchCoverage</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumBranchCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientCommentDensity</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumCommentDensity</key>
+ <value>90.0</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientLineCoverage</key>
+ <priority>CRITICAL</priority>
+ <parameters>
+ <parameter>
+ <key>minimumLineCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>FailedUnitTests</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>SkippedUnitTests</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssueFilterTest/with-many-rules.xml b/tests/src/test/resources/issue/IssueFilterTest/with-many-rules.xml
new file mode 100644
index 00000000000..366a3ab7576
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueFilterTest/with-many-rules.xml
@@ -0,0 +1,43 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientLineCoverage</key>
+ <priority>BLOCKER</priority>
+ <parameters>
+ <parameter>
+ <key>minimumLineCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/IssuePurgeTest/with-many-rules.xml b/tests/src/test/resources/issue/IssuePurgeTest/with-many-rules.xml
new file mode 100644
index 00000000000..f3d0baf0616
--- /dev/null
+++ b/tests/src/test/resources/issue/IssuePurgeTest/with-many-rules.xml
@@ -0,0 +1,32 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/issue/IssueTrackingTest/one-issue-per-module-profile.xml b/tests/src/test/resources/issue/IssueTrackingTest/one-issue-per-module-profile.xml
new file mode 100644
index 00000000000..8b863ce9a46
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueTrackingTest/one-issue-per-module-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-module</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/issue/IssueWorkflowTest/xoo-one-issue-per-line-profile.xml b/tests/src/test/resources/issue/IssueWorkflowTest/xoo-one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..608f80cae96
--- /dev/null
+++ b/tests/src/test/resources/issue/IssueWorkflowTest/xoo-one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>xoo-one-issue-per-line-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/NewIssuesMeasureTest/profile1.xml b/tests/src/test/resources/issue/NewIssuesMeasureTest/profile1.xml
new file mode 100644
index 00000000000..3acc7f6a4ed
--- /dev/null
+++ b/tests/src/test/resources/issue/NewIssuesMeasureTest/profile1.xml
@@ -0,0 +1,27 @@
+<profile>
+ <name>profile1</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/NewIssuesMeasureTest/profile2.xml b/tests/src/test/resources/issue/NewIssuesMeasureTest/profile2.xml
new file mode 100644
index 00000000000..70e0f8cd25a
--- /dev/null
+++ b/tests/src/test/resources/issue/NewIssuesMeasureTest/profile2.xml
@@ -0,0 +1,32 @@
+<profile>
+ <name>profile2</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/issue-on-tag-foobar.xml b/tests/src/test/resources/issue/issue-on-tag-foobar.xml
new file mode 100644
index 00000000000..d49b8f7c6c5
--- /dev/null
+++ b/tests/src/test/resources/issue/issue-on-tag-foobar.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>issue-on-tag-foobar</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>MAJOR</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>foobar</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/one-issue-per-file-profile.xml b/tests/src/test/resources/issue/one-issue-per-file-profile.xml
new file mode 100644
index 00000000000..141921f02e7
--- /dev/null
+++ b/tests/src/test/resources/issue/one-issue-per-file-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-file-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/one-issue-per-line-profile.xml b/tests/src/test/resources/issue/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..28cebcc2380
--- /dev/null
+++ b/tests/src/test/resources/issue/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-line-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/issue/with-many-rules.xml b/tests/src/test/resources/issue/with-many-rules.xml
new file mode 100644
index 00000000000..f97ef70cefd
--- /dev/null
+++ b/tests/src/test/resources/issue/with-many-rules.xml
@@ -0,0 +1,42 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBugIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneVulnerabilityIssuePerModule</key>
+ <priority>BLOCKER</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/logback-test.xml b/tests/src/test/resources/logback-test.xml
new file mode 100644
index 00000000000..599faa969f0
--- /dev/null
+++ b/tests/src/test/resources/logback-test.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<configuration debug="false">
+ <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
+
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>
+ %d{yyyy.MM.dd HH:mm:ss} %-5level %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <root>
+ <!-- Don't set to DEBUG or it will show the dev licenses into the console!!!! -->
+ <level value="INFO"/>
+ <appender-ref ref="CONSOLE"/>
+ </root>
+
+</configuration>
diff --git a/tests/src/test/resources/measure/ProjectDashboardTest/test_project_overview_after_first_analysis.html b/tests/src/test/resources/measure/ProjectDashboardTest/test_project_overview_after_first_analysis.html
new file mode 100644
index 00000000000..ac440b184aa
--- /dev/null
+++ b/tests/src/test/resources/measure/ProjectDashboardTest/test_project_overview_after_first_analysis.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_overview_after_first_analysis</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_overview_after_first_analysis</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard?id=project-for-overview</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Quality Gate*Passed*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=overview-code-smells</td>
+ <td>*0*A*Debt*0*Code Smells*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*0.0%*Duplications*0*Duplicated Blocks*</td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>id=content</td>
+ <td>*Coverage*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Quality Gate*SonarQube way*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Quality Profiles*Xoo*Basic*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_display_measures_page.html b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_display_measures_page.html
new file mode 100644
index 00000000000..4c5a77a9545
--- /dev/null
+++ b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_display_measures_page.html
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_display_measure_drilldown</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component_measures?id=project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=measure-code_smells</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=measure-code_smells-value</td>
+ <td>*0*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=measure-new_code_smells-leak</td>
+ <td>*0*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#measure-code_smells &gt; a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Code Smells*0*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*src/main/xoo/sample*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_list_view.html b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_list_view.html
new file mode 100644
index 00000000000..e68d8b87dfb
--- /dev/null
+++ b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_list_view.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_drilldown_on_list_view</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component_measures/metric/ncloc/list?id=project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td>*src/main/xoo/sample/Sample.xoo*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-measure-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo-ncloc</td>
+ <td>*13*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line-code</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.component-measures-breadcrumbs</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-breadcrumb-project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.component-measures-breadcrumbs</td>
+ <td>*Sample.xoo*13*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=component-measures-breadcrumb-project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_tree_view.html b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_tree_view.html
new file mode 100644
index 00000000000..489c9d93afc
--- /dev/null
+++ b/tests/src/test/resources/measure/ProjectMeasuresPageTest/should_drilldown_on_tree_view.html
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_drilldown_on_tree_view</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component_measures/metric/ncloc/tree?id=project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample</td>
+ <td>*src/main/xoo/sample*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-measure-project-measures-page-test-project:src/main/xoo/sample-ncloc</td>
+ <td>*13*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td>*src/main/xoo/sample/Sample.xoo*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>id=component-measures-component-measure-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo-ncloc</td>
+ <td>*13*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.component-measures-breadcrumbs</td>
+ <td>*ProjectMeasuresPageTest Project*src/main/xoo/sample*13*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample/Sample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line-code</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.component-measures-breadcrumbs</td>
+ <td>*ProjectMeasuresPageTest Project*src/main/xoo/sample*13*Sample.xoo*13*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=component-measures-breadcrumb-project-measures-page-test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=component-measures-component-link-project-measures-page-test-project:src/main/xoo/sample</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/measure/one-issue-per-file.xml b/tests/src/test/resources/measure/one-issue-per-file.xml
new file mode 100644
index 00000000000..7193ebfd779
--- /dev/null
+++ b/tests/src/test/resources/measure/one-issue-per-file.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-file</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/measure/one-issue-per-line-profile.xml b/tests/src/test/resources/measure/one-issue-per-line-profile.xml
new file mode 100644
index 00000000000..521adc7e06f
--- /dev/null
+++ b/tests/src/test/resources/measure/one-issue-per-line-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/measure/one-issue-per-line.xml b/tests/src/test/resources/measure/one-issue-per-line.xml
new file mode 100644
index 00000000000..365aa896a73
--- /dev/null
+++ b/tests/src/test/resources/measure/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/one-xoo-issue-per-line.xml b/tests/src/test/resources/one-xoo-issue-per-line.xml
new file mode 100644
index 00000000000..b2f49460d34
--- /dev/null
+++ b/tests/src/test/resources/one-xoo-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-xoo-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MAJOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/organization/IssueAssignTest/one-issue-per-file-profile.xml b/tests/src/test/resources/organization/IssueAssignTest/one-issue-per-file-profile.xml
new file mode 100644
index 00000000000..141921f02e7
--- /dev/null
+++ b/tests/src/test/resources/organization/IssueAssignTest/one-issue-per-file-profile.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?><!-- Generated by Sonar -->
+<profile>
+ <name>one-issue-per-file-profile</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_compare.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_compare.html
new file mode 100644
index 00000000000..b8ea98d1690
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_compare.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_changelog</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_changelog</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-name a[href^=&quot;/organizations/test-org/quality_profiles/show?key=xoo-sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profiles-table-name a[href^=&quot;/organizations/test-org/quality_profiles/show?key=xoo-sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-compare</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-comparison .Select</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-profile-comparison .Select-control</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_copy.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_copy.html
new file mode 100644
index 00000000000..1ed2b8a9018
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_copy.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-copy</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#copy-profile-name</td>
+ <td>copied</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#copy-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*copied*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*1*Bugs*0*Vulnerabilities*0*Code Smells*1*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;copied&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_create.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_create.html
new file mode 100644
index 00000000000..a6716b8c06a
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_create.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#quality-profiles-create</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profiles-create</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#create-profile-name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=#create-profile-form-backup-XooProfileImporter</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#create-profile-name</td>
+ <td>test</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#create-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*test*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*Bugs*0*Vulnerabilities*0*Code Smells*0*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;test&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_delete.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_delete.html
new file mode 100644
index 00000000000..9610b0db66c
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_delete.html
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-delete</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#delete-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#delete-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_changelog.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_changelog.html
new file mode 100644
index 00000000000..12536be7cbf
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_changelog.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_changelog</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_changelog</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=a[href^=&quot;/organizations/test-org/quality_profiles/changelog&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=a[href^=&quot;/organizations/test-org/quality_profiles/changelog&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-changelog-event</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-profile-changelog-event</td>
+ <td>*System*Activated*Has Tag*Major*tag*xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_list.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_list.html
new file mode 100644
index 00000000000..4d9242c77de
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_list.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_display_list</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_list</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name</td>
+ <td>*Basic*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-projects</td>
+ <td>*Default*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-rules</td>
+ <td>*1*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-rules a[href^=&quot;/organizations/test-org/rules#qprofile&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo2&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name</td>
+ <td>*Basic*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_exporters.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_exporters.html
new file mode 100644
index 00000000000..b26d162f2e7
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_exporters.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_projects.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_projects.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters [data-key=&quot;XooFakeExporter&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters a[href^=&quot;/api/qualityprofiles/export&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_inheritance.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_inheritance.html
new file mode 100644
index 00000000000..c403fbf5196
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_inheritance.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_inheritance.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_inheritance.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-inheritance</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-inheritance-ancestor</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-inheritance-ancestor</td>
+ <td>*Basic*1*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.js-inheritance-current</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-inheritance-current</td>
+ <td>*sample*1*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_projects.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_projects.html
new file mode 100644
index 00000000000..062014eb239
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_projects.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_projects.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_projects.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-projects</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-profile-project</td>
+ <td>*Sample*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_rules.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_rules.html
new file mode 100644
index 00000000000..6b497fc7b58
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_display_profile_rules.html
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_rules.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_rules.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-rules</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*Active*1*Bugs*0*Vulnerabilities*0*Code Smells*1*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_filter_by_language.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_filter_by_language.html
new file mode 100644
index 00000000000..a913a70a34f
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_filter_by_language.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_filter_by_language</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_filter_by_language</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*All*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-language-filter</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-language-filter-option[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-language-filter-option[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=.quality-profiles-table[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*Xoo2*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles?language=xoo2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.quality-profiles-table[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*Xoo2*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_open_from_list.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_open_from_list.html
new file mode 100644
index 00000000000..2e753ba1cd7
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_open_from_list.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_open_from_list</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_open_from_list</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-rules</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-inheritance</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-projects</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_rename.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_rename.html
new file mode 100644
index 00000000000..5da4d40ca0c
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_rename.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-rename</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#rename-profile-name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#rename-profile-name</td>
+ <td>new name</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#rename-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*new name*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;new name&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_restore.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_restore.html
new file mode 100644
index 00000000000..dd2d21ba31f
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_restore.html
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-more-admin-actions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-more-admin-actions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profiles-restore</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#restore-profile-backup</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#restore-profile-submit</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_set_default.html b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_set_default.html
new file mode 100644
index 00000000000..c267bf702e3
--- /dev/null
+++ b/tests/src/test/resources/organization/OrganizationQualityProfilesUiTest/should_set_default.html
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin2</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-set-as-default</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-projects</td>
+ <td>*Default*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/organizations/test-org/quality_profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;sample&quot;] .quality-profiles-table-projects</td>
+ <td>*Default*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/BackgroundTasksTest/should_not_display_failing_and_search_and_filter_elements_on_project_level_page.html b/tests/src/test/resources/projectAdministration/BackgroundTasksTest/should_not_display_failing_and_search_and_filter_elements_on_project_level_page.html
new file mode 100644
index 00000000000..e28cdbba827
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/BackgroundTasksTest/should_not_display_failing_and_search_and_filter_elements_on_project_level_page.html
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_not_display_failing_and_search_and_filter_elements_on_project_level_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">should_not_display_failing_and_search_and_filter_elements_on_project_level_page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/project/background_tasks?id=test-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.background-tasks .badge</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertNotText</td>
+ <td>css=.background-tasks</td>
+ <td>*Another Test Project*</td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.js-search</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertNotText</td>
+ <td>css=#content</td>
+ <td>*still failing*</td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.icon-filter</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/BulkDeletionTest/bulk-delete-filter-projects.html b/tests/src/test/resources/projectAdministration/BulkDeletionTest/bulk-delete-filter-projects.html
new file mode 100644
index 00000000000..b6256e49b35
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/BulkDeletionTest/bulk-delete-filter-projects.html
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>bulk-delete-filter-projects</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/projects_admin</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Bar-Sonar-Plugin*Foo-Application*Sample-Project*</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=.search-box-input</td>
+ <td>s</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.search-box-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Bar-Sonar-Plugin*Sample-Project*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*cameleon-3*cameleon-1*</td>
+</tr>
+<tr>
+ <td>assertTextNotPresent</td>
+ <td>content</td>
+ <td>*Foo-Application*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-delete-version.html b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-delete-version.html
new file mode 100644
index 00000000000..496917b9e4c
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-delete-version.html
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>multimodule-project-delete-version</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">project-modify-versions</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/project/history/com.sonarsource.it.samples:multi-modules-sample</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>link=Remove</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertConfirmation</td>
+ <td>Are you sure you want to remove 'RELEASE' from this snapshot?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>infomsg</td>
+ <td>glob:*Version 'RELEASE' was removed from current project*</td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>version_1</td>
+ <td>glob:*RELEASE*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-modify-version.html b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-modify-version.html
new file mode 100644
index 00000000000..f336f7e93b9
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-administration/multimodule-project-modify-version.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>multimodule-project-modify-version</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">project-modify-versions</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/project/history/com.sonarsource.it.samples:multi-modules-sample</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementNotPresent</td>
+ <td>link=Remove</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>version_1_change</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>version_name_1</td>
+ <td>RELEASE</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>save_version_1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>infomsg</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>infomsg</td>
+ <td>Version 'RELEASE' was created for current project.</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>version_1</td>
+ <td>glob:*RELEASE*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-deletion/project-deletion.html b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-deletion/project-deletion.html
new file mode 100644
index 00000000000..9345f6e3f75
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/ProjectAdministrationTest/project-deletion/project-deletion.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>project-deletion</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">project-deletion</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>project-deletion-with-admin-permission-on-project</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/project/deletion?id=sample</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#delete-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#delete-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#delete-project-confirm</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#delete-project-confirm</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=#delete-project-confirm</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/dashboard?id=sample</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.process-spinner-failed</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectAdministration/ProjectPermissionsTest/test_project_permissions_page_shows_only_single_project.html b/tests/src/test/resources/projectAdministration/ProjectPermissionsTest/test_project_permissions_page_shows_only_single_project.html
new file mode 100644
index 00000000000..cbb6595ff20
--- /dev/null
+++ b/tests/src/test/resources/projectAdministration/ProjectPermissionsTest/test_project_permissions_page_shows_only_single_project.html
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_overview_after_first_analysis</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_overview_after_first_analysis</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/project_roles?id=project-permissions-project</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#projects</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>css=#projects</td>
+ <td>*Another Test Project*</td>
+ </tr>
+ <tr>
+ <td>assertElementNotPresent</td>
+ <td>css=footer</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.search-box</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-metrics.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-metrics.html
new file mode 100644
index 00000000000..ab7758bd71a
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-metrics.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-add-metrics</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>comparison-page</td>
+ <td>*Major issues*</td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>new_metric</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>typeAndWait</td>
+ <td>new_metric</td>
+ <td>major_violations</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Lines of Code*Complexity*Comments (%)*Duplicated Lines (%)*Issues*Coverage*Major Issues*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-projects.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-projects.html
new file mode 100644
index 00000000000..18c882331ad
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-add-projects.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-add-projects</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>new_resource</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>new_resource</td>
+ <td>project-comparison-test-project</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//option[text()='1.0-SNAPSHOT']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>selectAndWait</td>
+ <td>new_version</td>
+ <td>1.0-SNAPSHOT</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*ProjectComparisonTest Project*1.0-SNAPSHOT*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-display-basic-set-of-metrics.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-display-basic-set-of-metrics.html
new file mode 100644
index 00000000000..3a8e1256198
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-display-basic-set-of-metrics.html
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-display-basic-set-of-metrics</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Lines of Code*Complexity*Comments (%)*Duplicated Lines (%)*Issues*Coverage*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-metrics.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-metrics.html
new file mode 100644
index 00000000000..3b89b4af128
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-metrics.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-move-and-remove-metrics</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Lines of Code*Complexity*Comments (%)*Duplicated Lines (%)*Issues*Coverage*</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>down-0</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Complexity*Lines of Code*Comments (%)*Duplicated Lines (%)*Issues*Coverage*</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>up-5</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Complexity*Lines of Code*Comments (%)*Duplicated Lines (%)*Coverage*Issues*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*%*</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>del-m-2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>del-m-2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Complexity*Lines of Code*Coverage*Issues*</td>
+</tr>
+<tr>
+ <td>assertNotText</td>
+ <td>comparison-page</td>
+ <td>*%*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-projects.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-projects.html
new file mode 100644
index 00000000000..f7d71dbfd2f
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-move-and-remove-projects.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-move-and-remove-projects</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>new_resource</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>new_resource</td>
+ <td>project-comparison-test-project</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//option[text()='1.0-SNAPSHOT']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>selectAndWait</td>
+ <td>new_version</td>
+ <td>1.0-SNAPSHOT</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*ProjectComparisonTest Project*1.0-SNAPSHOT*</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>del-r-0</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertNotText</td>
+ <td>id=content</td>
+ <td>*Sample*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-not-add-differential-metrics.html b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-not-add-differential-metrics.html
new file mode 100644
index 00000000000..ff433b66005
--- /dev/null
+++ b/tests/src/test/resources/projectComparison/ProjectComparisonTest/should-not-add-differential-metrics.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-not-add-differential-metrics</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/comparison/index</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Lines of Code*Complexity*Comments (%)*Duplicated Lines (%)*Issues*Coverage*</td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>new_metric</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>typeAndWait</td>
+ <td>new_metric</td>
+ <td>new_violations</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>comparison-page</td>
+ <td>*Lines of Code*Complexity*Comments (%)*Duplicated Lines (%)*Issues*Coverage*</td>
+ </tr>
+ <tr>
+ <td>assertNotText</td>
+ <td>comparison-page</td>
+ <td>*New Issues*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/projectSearch/SearchProjectsTest/with-many-rules.xml b/tests/src/test/resources/projectSearch/SearchProjectsTest/with-many-rules.xml
new file mode 100644
index 00000000000..366a3ab7576
--- /dev/null
+++ b/tests/src/test/resources/projectSearch/SearchProjectsTest/with-many-rules.xml
@@ -0,0 +1,43 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>common-xoo</repositoryKey>
+ <key>InsufficientLineCoverage</key>
+ <priority>BLOCKER</priority>
+ <parameters>
+ <parameter>
+ <key>minimumLineCoverageRatio</key>
+ <value>90</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityGate/QualityGateOnRatingMeasuresTest/with-many-rules.xml b/tests/src/test/resources/qualityGate/QualityGateOnRatingMeasuresTest/with-many-rules.xml
new file mode 100644
index 00000000000..6668eff9096
--- /dev/null
+++ b/tests/src/test/resources/qualityGate/QualityGateOnRatingMeasuresTest/with-many-rules.xml
@@ -0,0 +1,42 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBugIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneVulnerabilityIssuePerModule</key>
+ <priority>BLOCKER</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html b/tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html
new file mode 100644
index 00000000000..951ae58d38a
--- /dev/null
+++ b/tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ SonarQube, open source software quality management tool.
+ ~ Copyright (C) 2008-2016 SonarSource
+ ~ mailto:contact AT sonarsource DOT com
+ ~
+ ~ SonarQube is free software; you can redistribute it and/or
+ ~ modify it under the terms of the GNU Lesser General Public
+ ~ License as published by the Free Software Foundation; either
+ ~ version 3 of the License, or (at your option) any later version.
+ ~
+ ~ SonarQube is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this program; if not, write to the Free Software Foundation,
+ ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should-display-alerts-correctly-history-page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">should-display-alerts-correctly-history-page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index/sample</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=#context-navigation .navbar-admin-link</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>link=History</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>link=History</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>//img[@title='Quality Gate Status: Green (was Orange). ']</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>//img[@title='Quality Gate Status: Orange. Lines > 5']</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityGate/QualityGateUiTest/should_display_quality_gates_page.html b/tests/src/test/resources/qualityGate/QualityGateUiTest/should_display_quality_gates_page.html
new file mode 100644
index 00000000000..b0975df675d
--- /dev/null
+++ b/tests/src/test/resources/qualityGate/QualityGateUiTest/should_display_quality_gates_page.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ SonarQube, open source software quality management tool.
+ ~ Copyright (C) 2008-2016 SonarSource
+ ~ mailto:contact AT sonarsource DOT com
+ ~
+ ~ SonarQube is free software; you can redistribute it and/or
+ ~ modify it under the terms of the GNU Lesser General Public
+ ~ License as published by the Free Software Foundation; either
+ ~ version 3 of the License, or (at your option) any later version.
+ ~
+ ~ SonarQube is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this program; if not, write to the Free Software Foundation,
+ ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_display_quality_gates_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">should_display_quality_gates_page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/quality_gates</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-gates-results a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-gates-results a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=quality-gate-conditions</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html b/tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html
new file mode 100644
index 00000000000..40de82c178a
--- /dev/null
+++ b/tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>reate_user_with_email</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">create_user_with_email</td>
+ </tr>
+ </thead>
+ <tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>tester</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>tester</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sonar/account/notifications</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=global_notifs_NewAlerts_EmailNotificationChannel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>check</td>
+ <td>id=global_notifs_NewAlerts_EmailNotificationChannel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>id=submit-notifications</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityGate/notifications/email_configuration.html b/tests/src/test/resources/qualityGate/notifications/email_configuration.html
new file mode 100644
index 00000000000..7b43cf8ee03
--- /dev/null
+++ b/tests/src/test/resources/qualityGate/notifications/email_configuration.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>email_configuration</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>setTimeout</td>
+ <td>300000</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/email_configuration</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertValue</td>
+ <td>smtp_host</td>
+ <td>localhost</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>to_address</td>
+ <td>test@example.org</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>submit_test</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForVisible</td>
+ <td>info</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityModel/has-hello-tag.xml b/tests/src/test/resources/qualityModel/has-hello-tag.xml
new file mode 100644
index 00000000000..88cf4f9273e
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/has-hello-tag.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>has-tag</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>hello</value>
+ </parameter>
+ </parameters>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/one-day-debt-per-file.xml b/tests/src/test/resources/qualityModel/one-day-debt-per-file.xml
new file mode 100644
index 00000000000..cdebd7554c9
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/one-day-debt-per-file.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-day-debt-per-file</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneDayDebtPerFile</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/one-issue-per-file.xml b/tests/src/test/resources/qualityModel/one-issue-per-file.xml
new file mode 100644
index 00000000000..7193ebfd779
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/one-issue-per-file.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-file</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/one-issue-per-line.xml b/tests/src/test/resources/qualityModel/one-issue-per-line.xml
new file mode 100644
index 00000000000..521adc7e06f
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/one-issue-per-line.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profile>
+ <name>one-issue-per-line</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ </rules>
+</profile> \ No newline at end of file
diff --git a/tests/src/test/resources/qualityModel/with-many-rules.xml b/tests/src/test/resources/qualityModel/with-many-rules.xml
new file mode 100644
index 00000000000..6668eff9096
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/with-many-rules.xml
@@ -0,0 +1,42 @@
+<profile>
+ <name>with-many-rules</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>HasTag</key>
+ <priority>INFO</priority>
+ <parameters>
+ <parameter>
+ <key>tag</key>
+ <value>xoo</value>
+ </parameter>
+ </parameters>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBugIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneVulnerabilityIssuePerModule</key>
+ <priority>BLOCKER</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/without-type-bug.xml b/tests/src/test/resources/qualityModel/without-type-bug.xml
new file mode 100644
index 00000000000..89c92cf10fa
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/without-type-bug.xml
@@ -0,0 +1,26 @@
+<profile>
+ <name>without-type-bug</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneVulnerabilityIssuePerModule</key>
+ <priority>BLOCKER</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/without-type-code-smells.xml b/tests/src/test/resources/qualityModel/without-type-code-smells.xml
new file mode 100644
index 00000000000..4bbb6f88ed7
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/without-type-code-smells.xml
@@ -0,0 +1,16 @@
+<profile>
+ <name>without-type-code-smells</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBugIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneVulnerabilityIssuePerModule</key>
+ <priority>BLOCKER</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityModel/without-type-vulnerability.xml b/tests/src/test/resources/qualityModel/without-type-vulnerability.xml
new file mode 100644
index 00000000000..c5fb823bd7c
--- /dev/null
+++ b/tests/src/test/resources/qualityModel/without-type-vulnerability.xml
@@ -0,0 +1,26 @@
+<profile>
+ <name>without-type-vulnerability</name>
+ <language>xoo</language>
+ <rules>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerLine</key>
+ <priority>MINOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerFile</key>
+ <priority>MAJOR</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneIssuePerModule</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ <rule>
+ <repositoryKey>xoo</repositoryKey>
+ <key>OneBugIssuePerLine</key>
+ <priority>CRITICAL</priority>
+ </rule>
+ </rules>
+</profile>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_compare.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_compare.html
new file mode 100644
index 00000000000..c2339d690f6
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_compare.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_changelog</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_changelog</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-name a[href^=&quot;/profiles/show?key=xoo-sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profiles-table-name a[href^=&quot;/profiles/show?key=xoo-sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-compare</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-comparison .Select</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-profile-comparison .Select-control</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_copy.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_copy.html
new file mode 100644
index 00000000000..d2f0a12a8b3
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_copy.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-copy</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#copy-profile-name</td>
+ <td>copied</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#copy-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*copied*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*1*Bugs*0*Vulnerabilities*0*Code Smells*1*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;copied&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_create.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_create.html
new file mode 100644
index 00000000000..7fefabfbd4a
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_create.html
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#quality-profiles-create</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profiles-create</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#create-profile-name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=#create-profile-form-backup-XooProfileImporter</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#create-profile-name</td>
+ <td>test</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#create-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*test*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*Bugs*0*Vulnerabilities*0*Code Smells*0*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;test&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_delete.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_delete.html
new file mode 100644
index 00000000000..85e85c0391c
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_delete.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-delete</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#delete-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#delete-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_changelog.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_changelog.html
new file mode 100644
index 00000000000..8614c2fdab9
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_changelog.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_changelog</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_changelog</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=a[href^=&quot;/profiles/changelog&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=a[href^=&quot;/profiles/changelog&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-changelog-event</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-profile-changelog-event</td>
+ <td>*System*Activated*Has Tag*Major*tag*xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_list.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_list.html
new file mode 100644
index 00000000000..66f83c9af47
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_list.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_display_list</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_list</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name</td>
+ <td>*Basic*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-projects</td>
+ <td>*Default*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-rules</td>
+ <td>*1*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-rules a[href^=&quot;/coding_rules#qprofile&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=table[data-language=&quot;xoo2&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name</td>
+ <td>*Basic*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_exporters.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_exporters.html
new file mode 100644
index 00000000000..ea8b1d321f1
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_exporters.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_projects.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_projects.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters [data-key=&quot;XooFakeExporter&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-exporters a[href^=&quot;/api/qualityprofiles/export&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_inheritance.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_inheritance.html
new file mode 100644
index 00000000000..501ae5b5df8
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_inheritance.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_inheritance.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_inheritance.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-inheritance</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-inheritance-ancestor</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-inheritance-ancestor</td>
+ <td>*Basic*1*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.js-inheritance-current</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-inheritance-current</td>
+ <td>*sample*1*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_projects.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_projects.html
new file mode 100644
index 00000000000..ff38495e318
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_projects.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_projects.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_projects.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-projects</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-profile-project</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-profile-project</td>
+ <td>*Sample*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_rules.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_rules.html
new file mode 100644
index 00000000000..eb5ccf3194b
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_display_profile_rules.html
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_profile_rules.html</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_display_profile_rules.html</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-rules</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-rules</td>
+ <td>*Active*1*Bugs*0*Vulnerabilities*0*Code Smells*1*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_filter_by_language.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_filter_by_language.html
new file mode 100644
index 00000000000..cfe5321b816
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_filter_by_language.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_filter_by_language</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_filter_by_language</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*All*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-language-filter</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-language-filter-option[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-language-filter-option[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=.quality-profiles-table[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*Xoo2*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles?language=xoo2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table .data[data-language=&quot;xoo2&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.quality-profiles-table[data-language=&quot;xoo&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.js-language-filter</td>
+ <td>*Xoo2*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_open_from_list.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_open_from_list.html
new file mode 100644
index 00000000000..de19c00a017
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_open_from_list.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>should_open_from_list</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_open_from_list</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;Basic&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-rules</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-inheritance</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-projects</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_rename.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_rename.html
new file mode 100644
index 00000000000..dfa3138f8b1
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_rename.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">should_create</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-rename</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#rename-profile-name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=#rename-profile-name</td>
+ <td>new name</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#rename-profile-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-header</td>
+ <td>*new name*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;new name&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_restore.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_restore.html
new file mode 100644
index 00000000000..8def7727001
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_restore.html
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-more-admin-actions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-more-admin-actions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profiles-restore</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#restore-profile-backup</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#restore-profile-submit</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_set_default.html b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_set_default.html
new file mode 100644
index 00000000000..6306820ba6a
--- /dev/null
+++ b/tests/src/test/resources/qualityProfile/QualityProfilesUiTest/should_set_default.html
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_create</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=table[data-language=&quot;xoo&quot;] tr[data-name=&quot;sample&quot;] .quality-profiles-table-name a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.quality-profile-header .dropdown-toggle</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=#quality-profile-set-as-default</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.quality-profile-projects</td>
+ <td>*Default*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/profiles</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;sample&quot;]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.quality-profiles-table-row[data-name=&quot;sample&quot;] .quality-profiles-table-projects</td>
+ <td>*Default*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks b/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks
new file mode 100644
index 00000000000..13234b49dc2
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks
Binary files differ
diff --git a/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks.txt b/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks.txt
new file mode 100644
index 00000000000..ce4a4adfc39
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/HttpsTest/keystore.jks.txt
@@ -0,0 +1,3 @@
+keytool -genkey -alias tests -keyalg RSA -keystore keystore.jks
+keystore password: thepassword
+key password for <tests>: thetests \ No newline at end of file
diff --git a/tests/src/test/resources/serverSystem/ServerSystemTest/derby-warning.html b/tests/src/test/resources/serverSystem/ServerSystemTest/derby-warning.html
new file mode 100644
index 00000000000..c2e13c56aad
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/ServerSystemTest/derby-warning.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>derby-warning</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">derby-warning</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertElementPresent</td>
+ <td>evaluation_warning</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>footer</td>
+ <td>glob:*evaluation*</td>
+ </tr>
+
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/serverSystem/ServerSystemTest/hide-jdbc-settings.html b/tests/src/test/resources/serverSystem/ServerSystemTest/hide-jdbc-settings.html
new file mode 100644
index 00000000000..311d000f9cd
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/ServerSystemTest/hide-jdbc-settings.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ SonarQube, open source software quality management tool.
+ ~ Copyright (C) 2008-2016 SonarSource
+ ~ mailto:contact AT sonarsource DOT com
+ ~
+ ~ SonarQube is free software; you can redistribute it and/or
+ ~ modify it under the terms of the GNU Lesser General Public
+ ~ License as published by the Free Software Foundation; either
+ ~ version 3 of the License, or (at your option) any later version.
+ ~
+ ~ SonarQube is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this program; if not, write to the Free Software Foundation,
+ ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>hide-jdbc-settings</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">hide-jdbc-settings</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/setup/index</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertTextNotPresent</td>
+ <td>jdbc:</td>
+ <td></td>
+ </tr>
+
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/serverSystem/ServerSystemTest/incompatible-plugin-1.0.jar b/tests/src/test/resources/serverSystem/ServerSystemTest/incompatible-plugin-1.0.jar
new file mode 100644
index 00000000000..541131c5093
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/ServerSystemTest/incompatible-plugin-1.0.jar
Binary files differ
diff --git a/tests/src/test/resources/serverSystem/ServerSystemTest/system_info.html b/tests/src/test/resources/serverSystem/ServerSystemTest/system_info.html
new file mode 100644
index 00000000000..e304586c59c
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/ServerSystemTest/system_info.html
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>system_info</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">system_info</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/system/index</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Official Distribution*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Database Version*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Pool Active Connections*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Start Time*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*Processors*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*java.class.path*java.specification.version*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/serverSystem/ServerSystemTest/url_ending_by_jsp.html b/tests/src/test/resources/serverSystem/ServerSystemTest/url_ending_by_jsp.html
new file mode 100644
index 00000000000..12056550fc2
--- /dev/null
+++ b/tests/src/test/resources/serverSystem/ServerSystemTest/url_ending_by_jsp.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ SonarQube, open source software quality management tool.
+ ~ Copyright (C) 2008-2016 SonarSource
+ ~ mailto:contact AT sonarsource DOT com
+ ~
+ ~ SonarQube is free software; you can redistribute it and/or
+ ~ modify it under the terms of the GNU Lesser General Public
+ ~ License as published by the Free Software Foundation; either
+ ~ version 3 of the License, or (at your option) any later version.
+ ~
+ ~ SonarQube is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this program; if not, write to the Free Software Foundation,
+ ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/dashboard/index/myproject.jsp</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=#content</td>
+ <td></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/settings/SettingsTest/sonar-secret.txt b/tests/src/test/resources/settings/SettingsTest/sonar-secret.txt
new file mode 100644
index 00000000000..65b98c522da
--- /dev/null
+++ b/tests/src/test/resources/settings/SettingsTest/sonar-secret.txt
@@ -0,0 +1 @@
+0PZz+G+f8mjr3sPn4+AhHg== \ No newline at end of file
diff --git a/tests/src/test/resources/sourceCode/EncodingTest/japanese_sources.html b/tests/src/test/resources/sourceCode/EncodingTest/japanese_sources.html
new file mode 100644
index 00000000000..d873fba3939
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/EncodingTest/japanese_sources.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>japanese_sources</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">japanese_sources</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=japanese-charset%3Asrc%2Fmain%2Fxoo%2Fcom%2Ftest%2FAppDuplication.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-viewer</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.source-table</td>
+ <td>glob:*public class AppDuplication*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.source-table</td>
+ <td>glob:*証明書パス構築に失敗しました。*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/HighlightingTest/symbol-usages-highlighting.html b/tests/src/test/resources/sourceCode/HighlightingTest/symbol-usages-highlighting.html
new file mode 100644
index 00000000000..42e1fc154f2
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/HighlightingTest/symbol-usages-highlighting.html
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>highlight-symbol-usages</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">highlight-symbol-usages</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=sample-with-highlighting%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForXpathCount</td>
+ <td>//span[contains(@class, 'sym')]</td>
+ <td>3</td>
+</tr>
+<tr>
+ <td>waitForXpathCount</td>
+ <td>//span[contains(@class, 'sym highlighted')]</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//span[contains(@class, 'sym')][2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForXpathCount</td>
+ <td>//span[contains(@class, 'sym highlighted')]</td>
+ <td>2</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v1.html b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v1.html
new file mode 100644
index 00000000000..7a1e36cf816
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v1.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>java-syntax-highlighting</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">highlight-syntax-v1</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=sample-with-highlighting%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;package&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;public&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;class&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <!-- Here class is wrong and will be fixed during next analysis -->
+ <td>glob:*&lt;span class="s"&gt;return&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="s"&gt;"hello"&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v2.html b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v2.html
new file mode 100644
index 00000000000..7f473dd9e43
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting-v2.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>java-syntax-highlighting</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">highlight-syntax-v2</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=sample-with-highlighting%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;package&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;public&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;class&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;return&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="s"&gt;"hello"&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting.html b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting.html
new file mode 100644
index 00000000000..53e4602a978
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/HighlightingTest/syntax-highlighting.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>java-syntax-highlighting</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">highlight-syntax</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/component/index?id=sample-with-highlighting%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.source-line</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;package&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;public&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;class&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="k"&gt;return&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>verifyHtmlSource</td>
+ <td>glob:*&lt;span class="s"&gt;"hello"&lt;/span&gt;*</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/ProjectCodeTest/code_page_should_expand_root_dir.html b/tests/src/test/resources/sourceCode/ProjectCodeTest/code_page_should_expand_root_dir.html
new file mode 100644
index 00000000000..c9737d5fe25
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/ProjectCodeTest/code_page_should_expand_root_dir.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>code_page_should_expand_root_dir</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">code_page_should_expand_root_dir</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/code?id=project-for-code-root-dir</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*Hello.xoo*src/main/xoo/sample*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/ProjectCodeTest/permalink.html b/tests/src/test/resources/sourceCode/ProjectCodeTest/permalink.html
new file mode 100644
index 00000000000..69364a69079
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/ProjectCodeTest/permalink.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_code_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_code_page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/code?id=project-for-code&amp;selected=project-for-code%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*public class Sample*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.code-breadcrumbs</td>
+ <td>*Project For Code*src/main/xoo/sample*Sample.xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/ProjectCodeTest/search.html b/tests/src/test/resources/sourceCode/ProjectCodeTest/search.html
new file mode 100644
index 00000000000..1594ee28cd5
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/ProjectCodeTest/search.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_code_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_code_page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/code?id=project-for-code</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*Project For Code*13*0*0*0.0%*</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=.search-box-input</td>
+ <td>xoo</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.search-box-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*Sample.xoo*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.code-name-cell a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*public class Sample*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.code-breadcrumbs</td>
+ <td>*Project For Code*src/main/xoo/sample*Sample.xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/sourceCode/ProjectCodeTest/test_project_code_page.html b/tests/src/test/resources/sourceCode/ProjectCodeTest/test_project_code_page.html
new file mode 100644
index 00000000000..9c6b163fa44
--- /dev/null
+++ b/tests/src/test/resources/sourceCode/ProjectCodeTest/test_project_code_page.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>test_project_code_page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">test_project_code_page</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/code?id=project-for-code</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*Project For Code*13*0*0*0.0%*</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*src/main/xoo/sample*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.code-name-cell a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=#content</td>
+ <td>*Sample.xoo*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.code-breadcrumbs a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForNotText</td>
+ <td>css=#content</td>
+ <td>*Sample.xoo*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/test/CoverageTest/it_coverage-expected.json b/tests/src/test/resources/test/CoverageTest/it_coverage-expected.json
new file mode 100644
index 00000000000..521b372b6ea
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTest/it_coverage-expected.json
@@ -0,0 +1,84 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "package sample;"
+ },
+ {
+ "line": 2,
+ "code": ""
+ },
+ {
+ "line": 3,
+ "code": "public class Sample {"
+ },
+ {
+ "line": 4,
+ "code": "\t"
+ },
+ {
+ "line": 5,
+ "code": "\tpublic Sample(int i) {"
+ },
+ {
+ "line": 6,
+ "code": "\t\tint j = i++;",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 7,
+ "code": "\t}"
+ },
+ {
+ "line": 8,
+ "code": "\t"
+ },
+ {
+ "line": 9,
+ "code": "\tprivate String myMethod() {"
+ },
+ {
+ "line": 10,
+ "code": "\t\tif (foo == bar) {",
+ "lineHits": 0,
+ "utLineHits": 0,
+ "conditions": 2,
+ "utConditions": 2,
+ "coveredConditions": 1,
+ "utCoveredConditions": 1
+ },
+ {
+ "line": 11,
+ "code": "\t\t\treturn \"hello\";",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 12,
+ "code": "\t\t} else {"
+ },
+ {
+ "line": 13,
+ "code": "\t\t\tthrow new IllegalStateException();",
+ "lineHits": 0,
+ "utLineHits": 0
+ },
+ {
+ "line": 14,
+ "code": "\t\t}"
+ },
+ {
+ "line": 15,
+ "code": "\t}"
+ },
+ {
+ "line": 16,
+ "code": "}"
+ },
+ {
+ "line": 17,
+ "code": ""
+ }
+ ]
+}
diff --git a/tests/src/test/resources/test/CoverageTest/unit_test_coverage-expected.json b/tests/src/test/resources/test/CoverageTest/unit_test_coverage-expected.json
new file mode 100644
index 00000000000..c2f25a610a9
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTest/unit_test_coverage-expected.json
@@ -0,0 +1,84 @@
+{
+ "sources":[
+ {
+ "line": 1,
+ "code": "package sample;",
+ },
+ {
+ "line": 2,
+ "code": "",
+ },
+ {
+ "line": 3,
+ "code": "public class Sample {",
+ },
+ {
+ "line": 4,
+ "code": "\t",
+ },
+ {
+ "line": 5,
+ "code": "\tpublic Sample(int i) {",
+ },
+ {
+ "line": 6,
+ "code": "\t\tint j = i++;",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 7,
+ "code": "\t}",
+ },
+ {
+ "line": 8,
+ "code": "\t",
+ },
+ {
+ "line": 9,
+ "code": "\tprivate String myMethod() {",
+ },
+ {
+ "line": 10,
+ "code": "\t\tif (foo == bar) {",
+ "lineHits": 0,
+ "utLineHits": 0,
+ "conditions": 2,
+ "utConditions": 2,
+ "coveredConditions": 1,
+ "utCoveredConditions": 1
+ },
+ {
+ "line": 11,
+ "code": "\t\t\treturn \"hello\";",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 12,
+ "code": "\t\t} else {",
+ },
+ {
+ "line": 13,
+ "code": "\t\t\tthrow new IllegalStateException();",
+ "lineHits": 0,
+ "utLineHits": 0
+ },
+ {
+ "line": 14,
+ "code": "\t\t}",
+ },
+ {
+ "line": 15,
+ "code": "\t}",
+ },
+ {
+ "line": 16,
+ "code": "}",
+ },
+ {
+ "line": 17,
+ "code": "",
+ }
+ ]
+}
diff --git a/tests/src/test/resources/test/CoverageTest/unit_test_coverage_no_condition-expected.json b/tests/src/test/resources/test/CoverageTest/unit_test_coverage_no_condition-expected.json
new file mode 100644
index 00000000000..aabf73102ff
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTest/unit_test_coverage_no_condition-expected.json
@@ -0,0 +1,80 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "package sample;",
+ },
+ {
+ "line": 2,
+ "code": "",
+ },
+ {
+ "line": 3,
+ "code": "public class Sample {",
+ },
+ {
+ "line": 4,
+ "code": "\t",
+ },
+ {
+ "line": 5,
+ "code": "\tpublic Sample(int i) {",
+ },
+ {
+ "line": 6,
+ "code": "\t\tint j = i++;",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 7,
+ "code": "\t}",
+ },
+ {
+ "line": 8,
+ "code": "\t",
+ },
+ {
+ "line": 9,
+ "code": "\tprivate String myMethod() {",
+ },
+ {
+ "line": 10,
+ "code": "\t\tif (foo == bar) {",
+ "lineHits": 0,
+ "utLineHits": 0
+ },
+ {
+ "line": 11,
+ "code": "\t\t\treturn \"hello\";",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 12,
+ "code": "\t\t} else {",
+ },
+ {
+ "line": 13,
+ "code": "\t\t\tthrow new IllegalStateException();",
+ "lineHits": 0,
+ "utLineHits": 0
+ },
+ {
+ "line": 14,
+ "code": "\t\t}",
+ },
+ {
+ "line": 15,
+ "code": "\t}",
+ },
+ {
+ "line": 16,
+ "code": "}",
+ },
+ {
+ "line": 17,
+ "code": "",
+ }
+ ]
+}
diff --git a/tests/src/test/resources/test/CoverageTest/ut_and_it_coverage-expected.json b/tests/src/test/resources/test/CoverageTest/ut_and_it_coverage-expected.json
new file mode 100644
index 00000000000..d2b26d19c61
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTest/ut_and_it_coverage-expected.json
@@ -0,0 +1,85 @@
+{
+ "sources": [
+ {
+ "line": 1,
+ "code": "package sample;"
+ },
+ {
+ "line": 2,
+ "code": ""
+ },
+ {
+ "line": 3,
+ "code": "public class Sample {"
+ },
+ {
+ "line": 4,
+ "code": "\t"
+ },
+ {
+ "line": 5,
+ "code": "\tpublic Sample(int i) {"
+ },
+ {
+ "line": 6,
+ "code": "\t\tint j = i++;",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 7,
+ "code": "\t}"
+ },
+ {
+ "line": 8,
+ "code": "\t"
+ },
+ {
+ "line": 9,
+ "code": "\tprivate String myMethod() {"
+ },
+ {
+ "line": 10,
+ "code": "\t\tif (foo == bar &amp;&amp; biz &gt; 1) {",
+ "lineHits": 0,
+ "utLineHits": 0,
+ "conditions": 4,
+ "utConditions": 4,
+ "coveredConditions": 2,
+ "utCoveredConditions": 2
+ },
+ {
+ "line": 11,
+ "code": "\t\t\treturn \"hello\";",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 12,
+ "code": "\t\t} else {"
+ },
+ {
+ "line": 13,
+ "code": "\t\t\tthrow new IllegalStateException();",
+ "lineHits": 1,
+ "utLineHits": 1
+ },
+ {
+ "line": 14,
+ "code": "\t\t}"
+ },
+ {
+ "line": 15,
+ "code": "\t}"
+ },
+ {
+ "line": 16,
+ "code": "}"
+ },
+ {
+ "line": 17,
+ "code": ""
+ }
+ ]
+
+}
diff --git a/tests/src/test/resources/test/CoverageTrackingTest/covered_files-expected.json b/tests/src/test/resources/test/CoverageTrackingTest/covered_files-expected.json
new file mode 100644
index 00000000000..5dda4f3dd11
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTrackingTest/covered_files-expected.json
@@ -0,0 +1,14 @@
+{
+ "files": [
+ {
+ "key": "sample-with-tests:src/main/xoo/sample/Sample.xoo",
+ "longName": "src/main/xoo/sample/Sample.xoo",
+ "coveredLines": 2
+ },
+ {
+ "key": "sample-with-tests:src/main/xoo/sample/Sample2.xoo",
+ "longName": "src/main/xoo/sample/Sample2.xoo",
+ "coveredLines": 1
+ }
+ ]
+}
diff --git a/tests/src/test/resources/test/CoverageTrackingTest/tests-expected.json b/tests/src/test/resources/test/CoverageTrackingTest/tests-expected.json
new file mode 100644
index 00000000000..121e6753074
--- /dev/null
+++ b/tests/src/test/resources/test/CoverageTrackingTest/tests-expected.json
@@ -0,0 +1,30 @@
+{
+ "tests": [
+ {
+ "name": "success",
+ "status": "OK",
+ "durationInMs": 4,
+ "coveredLines": 3
+ },
+ {
+ "name": "error",
+ "status": "ERROR",
+ "durationInMs": 2,
+ "coveredLines": 0,
+ "message": "Error",
+ "stacktrace": "The stack"
+ },
+ {
+ "name": "failure",
+ "status": "FAILURE",
+ "durationInMs": 2,
+ "coveredLines": 1,
+ "message": "Failure"
+ },
+ {
+ "name": "skipped",
+ "status": "SKIPPED",
+ "coveredLines": 0
+ }
+ ]
+}
diff --git a/tests/src/test/resources/test/TestExecutionTest/expected.json b/tests/src/test/resources/test/TestExecutionTest/expected.json
new file mode 100644
index 00000000000..843d28f5284
--- /dev/null
+++ b/tests/src/test/resources/test/TestExecutionTest/expected.json
@@ -0,0 +1,31 @@
+{
+ "tests": [
+ {
+ "name": "success",
+ "status": "OK",
+ "durationInMs": 4,
+ "coveredLines": 0
+ },
+ {
+ "name": "error",
+ "status": "ERROR",
+ "durationInMs": 2,
+ "coveredLines": 0,
+ "message": "Error",
+ "stacktrace": "The stack"
+ },
+ {
+ "name": "failure",
+ "status": "FAILURE",
+ "durationInMs": 2,
+ "coveredLines": 0,
+ "message": "Failure"
+ },
+ {
+ "name": "skipped",
+ "status": "SKIPPED",
+ "coveredLines": 0,
+ "durationInMs": 0
+ }
+ ]
+}
diff --git a/tests/src/test/resources/ui/UiExtensionsTest/static-files.html b/tests/src/test/resources/ui/UiExtensionsTest/static-files.html
new file mode 100644
index 00000000000..0acd31cc1fa
--- /dev/null
+++ b/tests/src/test/resources/ui/UiExtensionsTest/static-files.html
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>static-files</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/static/uiextensionsplugin/file.html</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>//body</td>
+ <td>Text from static resource</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/updateCenter/UpdateCenterTest/update-center.properties b/tests/src/test/resources/updateCenter/UpdateCenterTest/update-center.properties
new file mode 100644
index 00000000000..5882d43188f
--- /dev/null
+++ b/tests/src/test/resources/updateCenter/UpdateCenterTest/update-center.properties
@@ -0,0 +1,62 @@
+# THIS FILE IS USED BY THE UPDATE CENTER
+# DO NOT REMOVE OR RENAME
+#
+# Note : prefix all : by \
+#
+
+publicVersions=3.0,100.0
+
+3.0.description=Encryption of database password, TimeMachine available as widgets, New algorithm for tracking violations, 40 bugs and 40 improvements
+3.0.downloadUrl=http\://dist.sonar.codehaus.org/sonar-3.0.zip
+3.0.changelogUrl=http\://www.sonarsource.org/downloads/#3.0
+3.0.date=2012-04-17
+
+100.0.description=Hundred dot zero!
+100.0.downloadUrl=http\://dist.sonar.codehaus.org/sonar-100.0.zip
+100.0.changelogUrl=http\://www.sonarsource.org/downloads/#100.0
+100.0.date=2112-06-13
+
+
+plugins=fake,abap
+
+#--------------------------------------------------------------------------------------------------------------------------
+abap.homepageUrl=http\://www.sonarsource.com/products/plugins/languages/abap/
+abap.name=ABAP
+abap.category=Additional Languages
+abap.publicVersions=1.0,1.0.1,1.1,2.0.1
+
+abap.1.0.description=Initial version of the product
+abap.1.0.sqVersions=2.7,2.8,2.9,2.10,2.11,2.12,2.13,2.13.1,2.14,3.0,3.0.1,3.1,3.1.1
+abap.1.0.downloadUrl=
+abap.1.0.date=2011-07-29
+
+abap.1.0.1.description=Adjust computation of certain metrics
+abap.1.0.1.sqVersions=2.7,2.8,2.9,2.10,2.11,2.12,2.13,2.13.1,2.14,3.0,3.0.1,3.1,3.1.1
+abap.1.0.1.downloadUrl=
+abap.1.0.1.date=2011-08-28
+
+abap.1.1.description=Adjust computation of certain metrics
+abap.1.1.sqVersions=2.7,2.8,2.9,2.10,2.11,2.12,2.13,2.13.1,2.14,3.0,3.0.1,3.1,3.1.1
+abap.1.1.downloadUrl=
+abap.1.1.date=2012-01-05
+
+abap.2.0.1.description=This new version provides an ABAP source code extractor, adds 5 new rules and improves others
+abap.2.0.1.sqVersions=3.2,3.3,3.4,3.5,3.6,3.7,3.7.1,3.7.2,3.7.3,3.7.4,3.7.5,3.7.6,3.7.7,4.0,4.0.1,4.1,4.2,4.3,4.4,4.5,4.6,4.7,5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,6.0,6.1,6.2,6.3,6.4,6.5,6.6
+abap.2.0.1.downloadUrl=
+abap.2.0.1.date=2012-06-25
+
+#--------------------------------------------------------------------------------------------------------------------------
+fake.category=Additional Metrics
+fake.publicVersions=1.0,1.1
+fake.name=Fake
+fake.description=Fake plugin for integration tests
+
+fake.1.0.description=Initial release
+fake.1.0.sqVersions=3.2,3.3,3.4,3.5,3.6,3.7
+fake.1.0.downloadUrl=
+fake.1.0.date=2011-05-06
+
+fake.1.1.description=Support sonarqube v100.0
+fake.1.1.sqVersions=3.2,3.3,3.4,3.5,3.6,3.7,3.7.1,3.7.2,3.7.3,3.7.4,3.7.5,3.7.6,3.7.7,4.0,4.0.1,4.1,4.2,4.3,4.4,4.5,4.6,4.7,5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,6.0,6.1,6.2,6.3,6.4,6.5,6.6,100.0
+fake.1.1.downloadUrl=
+fake.1.1.date=2012-04-27
diff --git a/tests/src/test/resources/updateCenter/installed-plugins.html b/tests/src/test/resources/updateCenter/installed-plugins.html
new file mode 100644
index 00000000000..d1986f6f897
--- /dev/null
+++ b/tests/src/test/resources/updateCenter/installed-plugins.html
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>installed-plugins</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/updatecenter</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Fake*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=update-center-plugins</td>
+ <td>*Fake*1.0-SNAPSHOT*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/BaseIdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html b/tests/src/test/resources/user/BaseIdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html
new file mode 100644
index 00000000000..b62763fb7c9
--- /dev/null
+++ b/tests/src/test/resources/user/BaseIdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_to_authenticate_when_not_allowed_to_sign_up</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake base identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>bd</td>
+ <td>*Reason : A functional error has happened*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/BaseIdentityProviderTest/display_unauthorized_page_when_authentication_failed.html b/tests/src/test/resources/user/BaseIdentityProviderTest/display_unauthorized_page_when_authentication_failed.html
new file mode 100644
index 00000000000..47a19a2df41
--- /dev/null
+++ b/tests/src/test/resources/user/BaseIdentityProviderTest/display_unauthorized_page_when_authentication_failed.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>display_unauthorized_page_when_authentication_failed</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake base identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/BaseIdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html b/tests/src/test/resources/user/BaseIdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html
new file mode 100644
index 00000000000..40c300bd701
--- /dev/null
+++ b/tests/src/test/resources/user/BaseIdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_to_authenticate_when_not_allowed_to_sign_up</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake base identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*Reason : 'fake-base-id-provider' users are not allowed to sign up*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/BaseIdentityProviderTest/fail_when_email_already_exists.html b/tests/src/test/resources/user/BaseIdentityProviderTest/fail_when_email_already_exists.html
new file mode 100644
index 00000000000..b6f7e600ac3
--- /dev/null
+++ b/tests/src/test/resources/user/BaseIdentityProviderTest/fail_when_email_already_exists.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_when_email_already_exists</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake base identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>bd</td>
+ <td>*You can't sign up because email 'john@email.com' is already used by an existing user. This means that you probably already registered with another account*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html b/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html
new file mode 100644
index 00000000000..f7d0dd6ffb6
--- /dev/null
+++ b/tests/src/test/resources/user/ExternalAuthenticationTest/create-and-delete-user.html
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http:/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http:/selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>create-and-delete-users</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">create-and-delete-users</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/users</td>
+ <td></td>
+</tr>
+<tr>
+ <td>store</td>
+ <td>javascript{new Date().getTime()}</td>
+ <td>userId</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Create User*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=users-create</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=create-user-form</td>
+ <td>*Create User*</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=create-user-login</td>
+ <td>${userId}</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=create-user-name</td>
+ <td>Name of ${userId}</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=create-user-password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=create-user-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=users-list</td>
+ <td>*${userId}*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=[data-login=&quot;${userId}&quot;] .js-user-deactivate</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>id=deactivate-user-form</td>
+ <td>*${userId}*</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=deactivate-user-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForNotText</td>
+ <td>id=users-list</td>
+ <td>*${userId}*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>tester</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td>deactivate-user-form</td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>login_form</td>
+ <td>*Authentication failed*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details.html b/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details.html
new file mode 100644
index 00000000000..b2d712f516c
--- /dev/null
+++ b/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details.html
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http:/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http:/selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>external_user_details</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">external_user_details</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>tester</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>123</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/account/</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>login</td>
+ <td>tester</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=name</td>
+ <td>Tester Testerovich</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=email</td>
+ <td>tester@example.org</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details2.html b/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details2.html
new file mode 100644
index 00000000000..d18ae08afb9
--- /dev/null
+++ b/tests/src/test/resources/user/ExternalAuthenticationTest/external-user-details2.html
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http:/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http:/selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>external_user_details</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">external_user_details</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>tester</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>123</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/account</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>login</td>
+ <td>tester</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=name</td>
+ <td>Tester2 Testerovich</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=email</td>
+ <td>tester2@example.org</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/ExternalAuthenticationTest/system-info.html b/tests/src/test/resources/user/ExternalAuthenticationTest/system-info.html
new file mode 100644
index 00000000000..1daf46d205d
--- /dev/null
+++ b/tests/src/test/resources/user/ExternalAuthenticationTest/system-info.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http:/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http:/selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>external_user_details</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">external_user_details</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/system</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>id=content</td>
+ <td>*External User Authentication*FakeRealm*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/allow_users_to_sign_up.html b/tests/src/test/resources/user/LocalAuthenticationTest/allow_users_to_sign_up.html
new file mode 100644
index 00000000000..dab0c303ea5
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/allow_users_to_sign_up.html
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>allow_users_to_sign_up</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*Not a member*</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>link=Sign up</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>id=user_login</td>
+ <td>signuplogin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>id=user_name</td>
+ <td>SignUpName</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>id=user_password</td>
+ <td>password</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>id=user_password_confirmation</td>
+ <td>password</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>global-navigation</td>
+ <td>*Log in*</td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>signuplogin</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.navbar</td>
+ <td>*SignUpName*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>Link=SignUpName</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>css=.navbar</td>
+ <td>*Log out*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/force-authentication.html b/tests/src/test/resources/user/LocalAuthenticationTest/force-authentication.html
new file mode 100644
index 00000000000..4c5a751665d
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/force-authentication.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>force-authentication</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">force-authentication</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/login_successful.html b/tests/src/test/resources/user/LocalAuthenticationTest/login_successful.html
new file mode 100644
index 00000000000..18da805f66b
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/login_successful.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>login_successful</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">login_successful</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertTextPresent</td>
+ <td>Log out</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>link=Log out</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>link=Log in</td>
+ <td>Log in</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/login_wrong_password.html b/tests/src/test/resources/user/LocalAuthenticationTest/login_wrong_password.html
new file mode 100644
index 00000000000..dc66db8ee9b
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/login_wrong_password.html
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>login_wrong_password</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>wrong</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertTextPresent</td>
+ <td>Authentication failed</td>
+ <td></td>
+ </tr>
+
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_login_when_not_enough_privilege.html b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_login_when_not_enough_privilege.html
new file mode 100644
index 00000000000..9b5a1645ace
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_login_when_not_enough_privilege.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>redirect-to-original-url-after-direct-login</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>simple-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/settings</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>content</td>
+ <td>*You are not authorized to access this page. Please log in with more privileges and try again.*</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_direct_login.html b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_direct_login.html
new file mode 100644
index 00000000000..c6519726f27
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_direct_login.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>redirect-to-original-url-after-direct-login</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>global-navigation</td>
+ <td>*Log in*</td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/settings?category=general</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertLocation</td>
+ <td>glob:*/settings?category=general*</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_indirect_login.html b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_indirect_login.html
new file mode 100644
index 00000000000..aecfd8af765
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_after_indirect_login.html
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>global-navigation</td>
+ <td>*Log in*</td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/settings</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertLocation</td>
+ <td>*/settings</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_with_parameters_after_direct_login.html b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_with_parameters_after_direct_login.html
new file mode 100644
index 00000000000..5359e3308e0
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/redirect_to_original_url_with_parameters_after_direct_login.html
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>global-navigation</td>
+ <td>*Log in*</td>
+ </tr>
+ <tr>
+ <td>open</td>
+ <td>/projects?gate=OK&reliability=1&security=1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>global-navigation</td>
+ <td>*Log in*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>link=Log in</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+ </tr>
+ <tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>assertLocation</td>
+ <td>*/projects?gate=OK&reliability=1&security=1</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/LocalAuthenticationTest/should_not_be_unlogged_when_going_to_login_page.html b/tests/src/test/resources/user/LocalAuthenticationTest/should_not_be_unlogged_when_going_to_login_page.html
new file mode 100644
index 00000000000..af5b4362f0e
--- /dev/null
+++ b/tests/src/test/resources/user/LocalAuthenticationTest/should_not_be_unlogged_when_going_to_login_page.html
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>redirect-to-original-url-after-direct-login</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>simple-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log In to SonarQube*</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/MyAccountPageTest/should_display_no_projects.html b/tests/src/test/resources/user/MyAccountPageTest/should_display_no_projects.html
new file mode 100644
index 00000000000..2c2f0f026db
--- /dev/null
+++ b/tests/src/test/resources/user/MyAccountPageTest/should_display_no_projects.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_no_projects</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">should_display_no_projects</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>account-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/account/projects/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=#account-projects</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.account-projects-list</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/MyAccountPageTest/should_display_projects.html b/tests/src/test/resources/user/MyAccountPageTest/should_display_projects.html
new file mode 100644
index 00000000000..b199152803f
--- /dev/null
+++ b/tests/src/test/resources/user/MyAccountPageTest/should_display_projects.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>should_display_projects</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">should_display_projects</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>account-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>password</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/account/projects/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.account-project-card</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.account-project-name</td>
+ <td>*Sample*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.account-project-quality-gate</td>
+ <td>*Passed*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.account-project-key</td>
+ <td>*sample*</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>css=.account-project-description</td>
+ <td>*Description of a project*</td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.account-project-analysis</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>css=.account-project-links a[href=&quot;http://example.com&quot;]</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html b/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html
new file mode 100644
index 00000000000..6a38ed69063
--- /dev/null
+++ b/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_message_in_ui_but_not_in_log_when_unauthorized_exception.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_to_authenticate_when_not_allowed_to_sign_up</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake oauth2 identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>bd</td>
+ <td>*Reason : A functional error has happened*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_unauthorized_page_when_authentication_failed.html b/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_unauthorized_page_when_authentication_failed.html
new file mode 100644
index 00000000000..b01d24aad4c
--- /dev/null
+++ b/tests/src/test/resources/user/OAuth2IdentityProviderTest/display_unauthorized_page_when_authentication_failed.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>display_unauthorized_page_when_authentication_failed</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake oauth2 identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html b/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html
new file mode 100644
index 00000000000..a3da2de8ed0
--- /dev/null
+++ b/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_to_authenticate_when_not_allowed_to_sign_up.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_to_authenticate_when_not_allowed_to_sign_up</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake oauth2 identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*Reason : 'fake-oauth2-id-provider' users are not allowed to sign up*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_when_email_already_exists.html b/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_when_email_already_exists.html
new file mode 100644
index 00000000000..7d038ac592d
--- /dev/null
+++ b/tests/src/test/resources/user/OAuth2IdentityProviderTest/fail_when_email_already_exists.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>fail_when_email_already_exists</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">french</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>content</td>
+ <td>*Log in with Fake oauth2 identity provider*</td>
+ </tr>
+ <tr>
+ <td>click</td>
+ <td>css=.oauth-providers a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>waitForText</td>
+ <td>bd</td>
+ <td>*You're not authorized to access this page. Please contact the administrator.*</td>
+ </tr>
+ <tr>
+ <td>assertText</td>
+ <td>bd</td>
+ <td>*You can't sign up because email 'john@email.com' is already used by an existing user. This means that you probably already registered with another account*</td>
+ </tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html b/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html
new file mode 100644
index 00000000000..06e806cf259
--- /dev/null
+++ b/tests/src/test/resources/user/UsersPageTest/admin_should_change_its_own_password.html
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>admin_should_change_its_own_password</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr>
+<td rowspan="1" colspan="3">admin_should_change_its_own_password</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/login</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/users</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=[data-login=admin-user]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=[data-login=admin-user] .js-user-change-password</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.modal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=change-user-password-old-password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=change-user-password-password</td>
+ <td>new-admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>id=change-user-password-password-confirmation</td>
+ <td>new-admin-user</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=change-user-password-submit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.modal</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html b/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html
new file mode 100644
index 00000000000..c81949c4d10
--- /dev/null
+++ b/tests/src/test/resources/user/UsersPageTest/generate_and_revoke_user_token.html
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="selenium.base" href="http://localhost:49506"/>
+ <title>generate_and_revoke_user_token</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+ <thead>
+ <tr>
+ <td rowspan="1" colspan="3">generate_and_revoke_user_token</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>open</td>
+ <td>/sessions/logout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/sessions/new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>login</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>admin-user</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>commit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-authenticated</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/users</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-user-tokens</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-user-tokens</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.modal</td>
+ <td>*No tokens*</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-generate-token-form input</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>css=.js-generate-token-form input</td>
+ <td>test-token</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-generate-token-form button</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.modal code</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>css=.modal</td>
+ <td>*test-token*</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=.js-revoke-token-form</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-revoke-token-form button</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>css=.js-revoke-token-form button</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementNotPresent</td>
+ <td>css=.js-revoke-token-form</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>