jenkinsci / cobertura-plugin

Jenkins cobertura plugin
https://plugins.jenkins.io/cobertura/
MIT License
109 stars 133 forks source link

Source code display renders incorrectly when using Dark Mode #191

Open geerligs opened 1 year ago

geerligs commented 1 year ago

Jenkins and plugins versions report

Environment ```text Paste the output here ``` Jenkins: 2.390 OS: Windows 10 - 10.0 --- ace-editor:1.1 analysis-model-api:10.23.1 ansicolor:1.0.2 ant:481.v7b_09e538fcca antisamy-markup-formatter:155.v795fb_8702324 apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61 authentication-tokens:1.4 blueocean:1.27.1 blueocean-autofavorite:1.2.5 blueocean-bitbucket-pipeline:1.27.1 blueocean-commons:1.27.1 blueocean-config:1.27.1 blueocean-core-js:1.27.1 blueocean-dashboard:1.27.1 blueocean-display-url:2.4.1 blueocean-events:1.27.1 blueocean-git-pipeline:1.27.1 blueocean-github-pipeline:1.27.1 blueocean-i18n:1.27.1 blueocean-jira:1.27.1 blueocean-jwt:1.27.1 blueocean-personalization:1.27.1 blueocean-pipeline-api-impl:1.27.1 blueocean-pipeline-editor:1.27.1 blueocean-pipeline-scm-api:1.27.1 blueocean-rest:1.27.1 blueocean-rest-impl:1.27.1 blueocean-web:1.27.1 bootstrap4-api:4.6.0-5 bootstrap5-api:5.2.1-3 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-timeout:1.28 caffeine-api:2.9.3-65.v6a_47d0f4d1fe calendar-view:0.3.2 checks-api:1.8.1 cloudbees-bitbucket-branch-source:791.vb_eea_a_476405b cloudbees-folder:6.800.v71307ca_b_986b cobertura:1.17 code-coverage-api:3.5.0 command-launcher:90.v669d7ccb_7c31 commons-lang3-api:3.12.0-36.vd97de6465d5b_ commons-text-api:1.10.0-27.vb_fa_3896786a_7 credentials:1214.v1de940103927 credentials-binding:523.vd859a_4b_122e6 custom-tools-plugin:0.8 cvs:2.19.1 dark-theme:302.vf069cb_e01486 data-tables-api:1.12.1-4 datadog:5.2.0 display-url-api:2.3.7 docker-commons:1.21 docker-workflow:563.vd5d2e5c4007f durable-task:504.vb10d1ae5ba2f echarts-api:5.4.0-1 email-ext:2.93 embeddable-build-status:312.vf2de01b_051d0 extended-choice-parameter:359.v35dcfdd0c20d external-monitor-job:203.v683c09d993b_9 favorite:2.4.1 font-awesome-api:6.2.1-1 forensics-api:1.17.0 git:5.0.0 git-client:4.1.0 git-forensics:1.11.0 git-server:99.va_0826a_b_cdfa_d gitea:1.4.5 github:1.36.1 github-api:1.303-400.v35c2d8258028 github-branch-source:1701.v00cc8184df93 gitlab-api:5.0.1-78.v47a_45b_9f78b_7 gitlab-branch-source:644.va_a_66886e07b_5 gradle:2.2 handlebars:3.0.8 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 htmlpublisher:1.31 instance-identity:142.v04572ca_5b_265 ionicons-api:31.v4757b_6987003 jackson2-api:2.14.2-319.v37853346a_229 jakarta-activation-api:2.0.1-2 jakarta-mail-api:2.0.1-2 javadoc:226.v71211feb_e7e9 javax-activation-api:1.2.0-5 javax-mail-api:1.6.2-8 jaxb:2.3.8-1 jdk-tool:63.v62d2fd4b_4793 jenkins-design-language:1.27.1 jersey2-api:2.38-1 jira:3.9 jjwt-api:0.11.5-77.v646c772fddb_0 jnr-posix-api:3.1.16-1 job-import-plugin:3.6 jquery:1.12.4-1 jquery-detached:1.2.1 jquery3-api:3.6.1-2 jsch:0.1.55.61.va_e9ee26616e7 junit:1166.va_436e268e972 ldap:659.v8ca_b_a_fe79fa_d locale:226.v008e1b_58cb_b_0 lockable-resources:1123.v4002ee23c671 log-parser:2.3.0 mailer:448.v5b_97805e3767 mapdb-api:1.0.9-28.vf251ce40855d matlab:2.9.0 matrix-auth:3.1.6 matrix-project:785.v06b_7f47b_c631 mercurial:1260.vdfb_723cdcc81 mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a momentjs:1.1.1 monitoring:1.91.0 msbuild:1.30 okhttp-api:4.9.3-108.v0feda04578cf pam-auth:1.10 pipeline-build-step:2.18 pipeline-github-lib:38.v445716ea_edda_ pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:629.vb_5627b_ee2104 pipeline-input-step:466.v6d0a_5df34f81 pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2118.v31fd5b_9944b_5 pipeline-model-definition:2.2118.v31fd5b_9944b_5 pipeline-model-extensions:2.2118.v31fd5b_9944b_5 pipeline-rest-api:2.31 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5 pipeline-stage-view:2.31 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:2.20.0 popper-api:1.16.1-3 popper2-api:2.11.6-2 prism-api:1.29.0-2 pubsub-light:1.17 resource-disposer:0.20 saferestart:0.7 scm-api:631.v9143df5b_e4a_a script-security:1229.v4880b_b_e905a_6 snakeyaml-api:1.33-90.v80dcb_3814d35 sse-gateway:1.26 ssh-credentials:305.v8f4381501156 ssh-slaves:2.854.v7fd446b_337c9 sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d subversion:2.17.0 tap:2.3 theme-manager:1.6 thinBackup:1.15 timestamper:1.21 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb versioncolumn:95.v82f3985cd6e1 warnings-ng:9.23.1 windows-slaves:1.8.1 workflow-aggregator:590.v6a_d052e5a_a_b_5 workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:994.vd57e3ca_46d24 workflow-cps:3618.v13db_a_21f0fcf workflow-durable-task-step:1223.v7f1a_98a_8863e workflow-job:1268.v6eb_e2ee1a_85a workflow-multibranch:716.vc692a_e52371b_ workflow-scm-step:400.v6b_89a_1317c9a_ workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:839.v35e2736cfd5c ws-cleanup:0.44

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

  1. switch to Dark Mode
  2. create a job using cobertura plugin
  3. inspect the Cobertura Coverage Report

Expected Results

I'd expect the source to be readable

Actual Results

The source code is impossible to read due to the white background.

By selecting the code it is almost possible to read

Anything else?

Results in dark Mode (selection enables me to read it sort of..: darkmodecobertura

results in default mode: defaultmodecobertura

atn34 commented 1 year ago

I'm also running into this. From noodling around in devtools I'm pretty sure something like

diff --git a/src/main/webapp/css/style.css b/src/main/webapp/css/style.css
index dbc417e..3e3bad5 100644
--- a/src/main/webapp/css/style.css
+++ b/src/main/webapp/css/style.css
@@ -1,4 +1,5 @@
 table.source {
+    color: black;
     border-style: solid;
     border-color: #bbb;
     border-spacing: 0;

would be an improvement. I haven't tested it though, since I'm not yet familiar with developing Jenkins plugins. Optimally I suppose the annotated source code could also use a dark theme, but that might be more involved.

cristik commented 3 months ago

Based on @atn34's idea, below is a short user script (TamperMonkey/Greasemonkey). This is easier than messing with the plugin itself, but has the disadvantage that it will need to be installed on every browser accessing the site.

// ==UserScript==
// @name         Cobertura patch for dark mode
// @namespace    http://tampermonkey.net/
// @version      2024-07-30
// @description  try to take over the world!
// @author       You
// @match        *://<YOUR_JENKINS_SERVER>/*
// @icon         https://<YOUR_JENKINS_SERVER>/favicon.ico
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    for (let table of document.getElementsByClassName("source")) {
        table.style.color = "black"
    }
})();