upgraded the ginger execution report for mail to have a more modern design#4474
Conversation
WalkthroughUpdated email execution report templates and adjusted inline CSS for error-field rendering. Changes include color and layout refinements, header restructuring, section title renaming to "RUNSET DETAILS", removal of box-shadow usage, and a word-break/min-width tweak for error cells. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`:
- Around line 212-218: The email header template no longer uses the inline image
cid:customer, but the sender code in
RunSetActionHTMLReportSendEmailOperations.cs still calls GetLinkedResource(...,
"customer") (around lines 370-387), causing an unused embedded image to be
attached; remove that GetLinkedResource(...) call (or guard it behind a check
that the template contains cid:customer) so the customer linked resource is not
added when the HTML does not reference it, and ensure any related
Add/LinkedResource attach logic for "customer" is cleaned up accordingly.
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html`:
- Around line 259-261: The template emits a stray
<!--ExecutionStatisticsDetails_Start--> without a matching
<!--ExecutionStatisticsDetails_End-->, breaking the section logic used by
RunSetActionHTMLReportSendEmailOperations (the code around
RunSetActionHTMLReportSendEmailOperations.cs:544-562) and GingerExecutionReport
(methods around GingerExecutionReport.cs:318-356); restore a proper
ExecutionStatisticsDetails block or remove the start token: either insert the
full ExecutionStatisticsDetails markup including the closing
<!--ExecutionStatisticsDetails_End--> (matching the structure expected by the
Render/conditional removal logic in GingerExecutionReport and
RunSetActionHTMLReportSendEmailOperations) or remove the lone
<!--ExecutionStatisticsDetails_Start--> entirely so the start/end pair remains
consistent with the code that finds and replaces that block.
- Around line 309-317: The failures details table is inheriting the global
"table { table-layout: fixed !important }" rule and needs the same override used
in EmailExecutionReport.html; update the Linux template so the failures grid
table (identify by class "innerTable" and/or the surrounding GridTitleTd header)
explicitly sets "table-layout: auto !important" — add the override either as an
inline style on the <table class="innerTable"> or as a CSS rule scoped to that
selector in EmailExecutionReportOnLinux.html to prevent long cell values from
being squeezed or overflowing.
- Around line 211-214: The header table in EmailExecutionReportOnLinux.html has
mismatched <tr> tags (the row containing the cell with class
"HeaderwhiteTextColor" / text "Ginger Execution Report" opens a <tr> but does
not close it), so add the corresponding closing </tr> tags to restore
well-formed table rows for the inner header table; also add the missing HTML
comment marker <!--ExecutionStatisticsDetails_End--> immediately after the
execution statistics block to match the existing
<!--ExecutionStatisticsDetails_Start--> marker so
RunSetActionHTMLReportSendEmailOperations.cs and GingerExecutionReport.cs can
detect the section correctly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 35775676-54ed-440c-8263-75bd5ca02ee7
⛔ Files ignored due to path filters (4)
Ginger/Ginger/Reports/GingerExecutionReport/assets/img/@BeatLogo.pngis excluded by!**/*.png,!**/*.pngGinger/Ginger/Reports/GingerExecutionReport/assets/img/@Ginger.pngis excluded by!**/*.png,!**/*.pngGinger/GingerCoreNET/Reports/GingerExecutionReport/assets/img/@BeatLogo.pngis excluded by!**/*.png,!**/*.pngGinger/GingerCoreNET/Reports/GingerExecutionReport/assets/img/@Ginger.pngis excluded by!**/*.png,!**/*.png
📒 Files selected for processing (4)
Ginger/GingerCoreNET/Reports/GingerExecutionReport.csGinger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.htmlGinger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.htmlGinger/GingerCoreNET/Run/RunSetActions/RunSetActionHTMLReportSendEmailOperations.cs
| <td style="width:25%;text-align:left;padding:10px 0 10px 15px;"> | ||
| <img height="40" src="cid:beat" aria-hidden="true" alt="Ginger Logo" border="0" style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; color: #555555;"> | ||
| </td> | ||
| <td style="width:50%;text-align:center" class="HeaderwhiteTextColor"><span>Ginger Execution Report</span></td> | ||
| <td cellspacing="20" style="width:50%; padding-right: 10px; text-align: right;" align="right"> <img height="40" align="right" src="cid:customer" aria-hidden="true" alt="alt_text" border="0" style="background: #fff; font-family: Arial, Helvetica, sans-serif; font-size: 15px; color: #555555;"></td> | ||
| <td style="width:25%;text-align:right;padding:10px 15px 10px 0;"> | ||
| <img height="40" align="right" src="cid:ginger" aria-hidden="true" alt="Ginger" border="0" style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; color: #555555;"> | ||
| </td> |
There was a problem hiding this comment.
Update the mail builder after removing cid:customer.
This header no longer references cid:customer, but RunSetActionHTMLReportSendEmailOperations.cs:370-387 still adds GetLinkedResource(..., "customer"). Every mail will now carry an unused inline image unless that code path is cleaned up too.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`
around lines 212 - 218, The email header template no longer uses the inline
image cid:customer, but the sender code in
RunSetActionHTMLReportSendEmailOperations.cs still calls GetLinkedResource(...,
"customer") (around lines 370-387), causing an unused embedded image to be
attached; remove that GetLinkedResource(...) call (or guard it behind a check
that the template contains cid:customer) so the customer linked resource is not
added when the HTML does not reference it, and ensure any related
Add/LinkedResource attach logic for "customer" is cleaned up accordingly.
| <tr> | ||
| <td style="width:33%;text-align:center" class="HeaderwhiteTextColor"><span>Ginger Execution Report</span></td> | ||
| <tr> | ||
| </table> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file=$(fd -p 'EmailExecutionReportOnLinux.html' | head -n1)
nl -ba "$file" | sed -n '207,214p'
python - <<'PY'
from pathlib import Path
p = next(Path('.').rglob('EmailExecutionReportOnLinux.html'))
block = "\n".join(p.read_text(encoding="utf-8").splitlines()[206:214])
print("open <tr> =", block.count("<tr>"))
print("close </tr> =", block.count("</tr>"))
PYRepository: Ginger-Automation/Ginger
Length of output: 110
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file=$(fd -p 'EmailExecutionReportOnLinux.html' | head -n1)
echo "=== File location: $file ==="
echo "=== Lines 207-214 with line numbers ==="
cat -n "$file" | sed -n '207,214p'
echo ""
echo "=== Tag count check ==="
python3 - <<'PY'
from pathlib import Path
p = next(Path('.').rglob('EmailExecutionReportOnLinux.html'))
block = "\n".join(p.read_text(encoding="utf-8").splitlines()[206:214])
print("Block content:")
print(block)
print("")
print("open <tr> count =", block.count("<tr>"))
print("close </tr> count =", block.count("</tr>"))
PYRepository: Ginger-Automation/Ginger
Length of output: 1675
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file=$(fd -p 'EmailExecutionReportOnLinux.html' | head -n1)
echo "=== Lines 256-265 (statistics markers check) ==="
cat -n "$file" | sed -n '256,265p'
echo ""
echo "=== Lines 306-320 (failures table check) ==="
cat -n "$file" | sed -n '306,320p'
echo ""
echo "=== Check for ExecutionStatisticsDetails markers ==="
grep -n "ExecutionStatisticsDetails" "$file" || echo "No statistics markers found"
echo ""
echo "=== Check for table-layout in CSS ==="
grep -n "table-layout" "$file" | head -5Repository: Ginger-Automation/Ginger
Length of output: 1892
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file=$(fd -p 'EmailExecutionReportOnLinux.html' | head -n1)
echo "=== CSS context lines 35-45 ==="
cat -n "$file" | sed -n '35,45p'
echo ""
echo "=== Search for ExecutionStatisticsDetails_End ==="
grep -n "ExecutionStatisticsDetails_End" "$file" || echo "NOT FOUND - Missing end marker"
echo ""
echo "=== Check if there's content between Statistics_Start and BusinessFlows_Start ==="
sed -n '260,265p' "$file"
echo ""
echo "=== Failures table at line 317 - check for table-layout style ==="
sed -n '317p' "$file"Repository: Ginger-Automation/Ginger
Length of output: 1219
Fix malformed header row with mismatched <tr> tags, and add missing statistics section end marker.
Line 213 opens a row where the first row should close. The inner header table has 3 opening <tr> tags and no closing </tr> tags, breaking HTML structure and causing inconsistent rendering across mail clients.
Additionally, line 260 declares <!--ExecutionStatisticsDetails_Start--> but the matching <!--ExecutionStatisticsDetails_End--> marker is missing from the file. This breaks the section boundary expected by RunSetActionHTMLReportSendEmailOperations.cs and GingerExecutionReport.cs, preventing proper content insertion.
Fixes
Line 213 (header row):
<tr>
<td style="width:33%;text-align:center" class="HeaderwhiteTextColor"><span>Ginger Execution Report</span></td>
- <tr>
+ </tr>Add missing marker after line 260:
<!--ExecutionStatisticsDetails_Start-->
+ <!--ExecutionStatisticsDetails_End-->
<!--ExecutionBusinessFlowsDetails_Start-->📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <tr> | |
| <td style="width:33%;text-align:center" class="HeaderwhiteTextColor"><span>Ginger Execution Report</span></td> | |
| <tr> | |
| </table> | |
| <tr> | |
| <td style="width:33%;text-align:center" class="HeaderwhiteTextColor"><span>Ginger Execution Report</span></td> | |
| </tr> | |
| </table> |
🧰 Tools
🪛 HTMLHint (1.9.2)
[error] 213-213: Tag must be paired, missing: [ ], start tag match failed [ ] on line 213.
(tag-pair)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html`
around lines 211 - 214, The header table in EmailExecutionReportOnLinux.html has
mismatched <tr> tags (the row containing the cell with class
"HeaderwhiteTextColor" / text "Ginger Execution Report" opens a <tr> but does
not close it), so add the corresponding closing </tr> tags to restore
well-formed table rows for the inner header table; also add the missing HTML
comment marker <!--ExecutionStatisticsDetails_End--> immediately after the
execution statistics block to match the existing
<!--ExecutionStatisticsDetails_Start--> marker so
RunSetActionHTMLReportSendEmailOperations.cs and GingerExecutionReport.cs can
detect the section correctly.
| <!--ExecutionGeneralDetails_End--> | ||
| <!--ExecutionStatisticsDetails_Start--> | ||
| <!--ExecutionBusinessFlowsDetails_Start--> |
There was a problem hiding this comment.
Restore a real ExecutionStatisticsDetails block or remove the stray start marker.
The Linux template now emits <!--ExecutionStatisticsDetails_Start--> but never closes it, and there is no statistics markup between that marker and <!--ExecutionBusinessFlowsDetails_Start-->. RunSetActionHTMLReportSendEmailOperations.cs:544-562 and GingerExecutionReport.cs:318-356 rely on the exact start/end pair, so this variant can no longer render or conditionally remove the statistics section correctly.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html`
around lines 259 - 261, The template emits a stray
<!--ExecutionStatisticsDetails_Start--> without a matching
<!--ExecutionStatisticsDetails_End-->, breaking the section logic used by
RunSetActionHTMLReportSendEmailOperations (the code around
RunSetActionHTMLReportSendEmailOperations.cs:544-562) and GingerExecutionReport
(methods around GingerExecutionReport.cs:318-356); restore a proper
ExecutionStatisticsDetails block or remove the start token: either insert the
full ExecutionStatisticsDetails markup including the closing
<!--ExecutionStatisticsDetails_End--> (matching the structure expected by the
Render/conditional removal logic in GingerExecutionReport and
RunSetActionHTMLReportSendEmailOperations) or remove the lone
<!--ExecutionStatisticsDetails_Start--> entirely so the start/end pair remains
consistent with the code that finds and replaces that block.
| <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" width="100%" bgcolor="#f2f5fa"> | ||
| <tr> | ||
| <td colspan="4" class="GridTitleTd"> | ||
| FAILED ACTIONS DETAILS | ||
| </td> | ||
| </tr> | ||
| </table> | ||
| <div class="spacerDiv"> </div> | ||
| <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable" style="box-shadow: 0 0 10px rgba(0,0,0,.6);-moz-box-shadow: 0 0 10px rgba(0,0,0,.6); -webkit-box-shadow: 0 0 10px rgba(0,0,0,.6);-o-box-shadow: 0 0 10px rgba(0,0,0,.6);"> | ||
| <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable"> |
There was a problem hiding this comment.
Mirror the table-layout:auto override on Linux failures details.
This table still inherits table-layout: fixed !important from the global table rule. Unlike EmailExecutionReport.html, it never overrides that for the failures grid, so long error values will keep squeezing or overflowing on Linux.
💡 Suggested fix
- <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable">
+ <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable" style="table-layout: auto !important;">📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" width="100%" bgcolor="#f2f5fa"> | |
| <tr> | |
| <td colspan="4" class="GridTitleTd"> | |
| FAILED ACTIONS DETAILS | |
| </td> | |
| </tr> | |
| </table> | |
| <div class="spacerDiv"> </div> | |
| <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable" style="box-shadow: 0 0 10px rgba(0,0,0,.6);-moz-box-shadow: 0 0 10px rgba(0,0,0,.6); -webkit-box-shadow: 0 0 10px rgba(0,0,0,.6);-o-box-shadow: 0 0 10px rgba(0,0,0,.6);"> | |
| <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable"> | |
| <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" width="100%" bgcolor="#f2f5fa"> | |
| <tr> | |
| <td colspan="4" class="GridTitleTd"> | |
| FAILED ACTIONS DETAILS | |
| </td> | |
| </tr> | |
| </table> | |
| <div class="spacerDiv"> </div> | |
| <table align="center" role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable" style="table-layout: auto !important;"> |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html`
around lines 309 - 317, The failures details table is inheriting the global
"table { table-layout: fixed !important }" rule and needs the same override used
in EmailExecutionReport.html; update the Linux template so the failures grid
table (identify by class "innerTable" and/or the surrounding GridTitleTd header)
explicitly sets "table-layout: auto !important" — add the override either as an
inline style on the <table class="innerTable"> or as a CSS rule scoped to that
selector in EmailExecutionReportOnLinux.html to prevent long cell values from
being squeezed or overflowing.
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`:
- Line 8: The HTML email template EmailExecutionReport.html has an empty <title>
tag; update the <title> element to contain a meaningful, descriptive string
(e.g., "Ginger Execution Report - {ExecutionName}" or "Ginger Execution Report")
so that EmailExecutionReport.html's <title> is not blank and improves
accessibility and browser display; locate the <title> tag in
EmailExecutionReport.html and replace the empty content with the chosen
descriptive text, optionally templating it if the report name is available.
- Around line 223-244: The gradient stripe in the <tr> of the email template is
inconsistent between platforms: one uses 20 <td> cells at 5% width with colors
`#ec008c` → ... → `#fdb118` while the other uses 3 wide ~33% <td>s (`#ec008c`,
`#f77341`, `#fdb515`), so update the template that differs to match the intended
design by editing the <tr> containing the gradient <td> elements—either replace
the 3-cell block with the 20 <td> entries (each width="5%" and the full color
sequence
`#ec008c`,`#ed0e83`,`#ee177d`,`#ef2077`,`#f02971`,`#f1326b`,`#f23b65`,`#f3455f`,`#f34e59`,`#f45754`,`#f5604e`,`#f66948`,`#f77242`,`#f87b3c`,`#f98436`,`#f98d30`,`#fa962a`,`#fb9f24`,`#fca81e`,`#fdb118`)
or consolidate the 20-cell row to the 3-cell variant—ensure the <tr> and its
<td> bgcolor values and width attributes are identical across both templates.
- Around line 275-280: The template now expects {RunsetDetails_Content} but
GingerExecutionReport.cs still writes into {GeneralDetails_Headers},
{GeneralDetails_Data}, {ExecutionGeneralDetails_Headers}, and
{ExecutionGeneralDetails_Data}; update the report-generation code in
GingerExecutionReport.cs to assemble the runset details HTML (the combined
content currently being produced for those old placeholders) and inject it into
the {RunsetDetails_Content} placeholder instead of the obsolete placeholders so
the "RUNSET DETAILS" section is populated.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: b6ac9df9-9668-4d81-bbff-3c5d65b38722
📒 Files selected for processing (2)
Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.htmlGinger/GingerCoreNET/Run/RunSetActions/RunSetActionHTMLReportSendEmailOperations.cs
| <meta name="viewport" content="width=device-width"> | ||
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
| <meta name="x-apple-disable-message-reformatting"> | ||
| <title></title> |
There was a problem hiding this comment.
Empty <title> tag should have descriptive content.
Static analysis flagged this as an error. While many email clients ignore the title, providing a meaningful value improves accessibility and helps users who view the email in a browser.
🔧 Proposed fix
- <title></title>
+ <title>Ginger Execution Report</title>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <title></title> | |
| <title>Ginger Execution Report</title> |
🧰 Tools
🪛 HTMLHint (1.9.2)
[error] 8-8: <title></title> must not be empty.
(title-require)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`
at line 8, The HTML email template EmailExecutionReport.html has an empty
<title> tag; update the <title> element to contain a meaningful, descriptive
string (e.g., "Ginger Execution Report - {ExecutionName}" or "Ginger Execution
Report") so that EmailExecutionReport.html's <title> is not blank and improves
accessibility and browser display; locate the <title> tag in
EmailExecutionReport.html and replace the empty content with the chosen
descriptive text, optionally templating it if the report name is available.
| <tr> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#ec008c"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#ed0e83"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#ee177d"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#ef2077"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f02971"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f1326b"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f23b65"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f3455f"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f34e59"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f45754"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f5604e"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f66948"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f77242"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f87b3c"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f98436"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#f98d30"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#fa962a"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#fb9f24"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#fca81e"></td> | ||
| <td style="height:4px;padding:0;font-size:0;line-height:0;width:5%" bgcolor="#fdb118"></td> | ||
| </tr> |
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Compare color stripe implementations between Windows and Linux templates
echo "=== Windows template color stripe ==="
rg -n "bgcolor=\"#e" --type=html Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html | head -25
echo ""
echo "=== Linux template color stripe ==="
rg -n "bgcolor=\"#e" --type=html Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html | head -10Repository: Ginger-Automation/Ginger
Length of output: 748
🏁 Script executed:
#!/bin/bash
# Get the complete color stripe from Windows template
echo "=== Windows template - full color stripe ==="
sed -n '223,244p' Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html | grep -o 'bgcolor="#[^"]*"' | wc -l
sed -n '223,244p' Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html | grep -o 'bgcolor="#[^"]*"'
echo ""
echo "=== Linux template - full color stripe ==="
# Find the same stripe pattern in Linux template
rg -A 30 'bgcolor="#ec008c"' --type=html Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html | head -40 | grep -o 'bgcolor="#[^"]*"' | wc -l
rg -A 30 'bgcolor="#ec008c"' --type=html Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html | head -40 | grep -o 'bgcolor="#[^"]*"'Repository: Ginger-Automation/Ginger
Length of output: 593
🏁 Script executed:
#!/bin/bash
# Get full Linux stripe HTML including width attributes
rg -B 2 -A 35 'bgcolor="#ec008c"' --type=html Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReportOnLinux.html | grep -E '<tr>|<td.*bgcolor' | head -10Repository: Ginger-Automation/Ginger
Length of output: 598
Visual gradient stripe differs between Windows and Linux templates.
The Windows template uses a 20-cell smooth gradient stripe (5% width each, colors ranging from #ec008c to #fdb118), while the Linux template uses a 3-cell blocky stripe (33–34% width each, colors #ec008c → #f77341 → #fdb515). This difference in color distribution and cell width creates visually distinct appearances across platforms. Consider whether this divergence is intentional or if the templates should be aligned.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`
around lines 223 - 244, The gradient stripe in the <tr> of the email template is
inconsistent between platforms: one uses 20 <td> cells at 5% width with colors
`#ec008c` → ... → `#fdb118` while the other uses 3 wide ~33% <td>s (`#ec008c`,
`#f77341`, `#fdb515`), so update the template that differs to match the intended
design by editing the <tr> containing the gradient <td> elements—either replace
the 3-cell block with the 20 <td> entries (each width="5%" and the full color
sequence
`#ec008c`,`#ed0e83`,`#ee177d`,`#ef2077`,`#f02971`,`#f1326b`,`#f23b65`,`#f3455f`,`#f34e59`,`#f45754`,`#f5604e`,`#f66948`,`#f77242`,`#f87b3c`,`#f98436`,`#f98d30`,`#fa962a`,`#fb9f24`,`#fca81e`,`#fdb118`)
or consolidate the 20-cell row to the 3-cell variant—ensure the <tr> and its
<td> bgcolor values and width attributes are identical across both templates.
| RUNSET DETAILS | ||
| </td> | ||
| </tr> | ||
| </table> | ||
| <div class="spacerDiv"> </div> | ||
| <table role="presentation" align="center" class="innerTable" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" style="box-shadow: 0 0 10px rgba(0,0,0,.6);-moz-box-shadow: 0 0 10px rgba(0,0,0,.6); -webkit-box-shadow: 0 0 10px rgba(0,0,0,.6);-o-box-shadow: 0 0 10px rgba(0,0,0,.6);"> | ||
| <thead> | ||
| <tr> | ||
| {ExecutionGeneralDetails_Headers} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| {ExecutionGeneralDetails_Data} | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <table role="presentation" align="center" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff" class="innerTable" style="box-shadow: 0 0 10px rgba(0,0,0,.6);-moz-box-shadow: 0 0 10px rgba(0,0,0,.6); -webkit-box-shadow: 0 0 10px rgba(0,0,0,.6);-o-box-shadow: 0 0 10px rgba(0,0,0,.6);"> | ||
| <thead> | ||
| <tr> | ||
| {GeneralDetails_Headers} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| {GeneralDetails_Data} | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| {RunsetDetails_Content} |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify the placeholder mismatch between template and C# code
echo "=== Placeholders in the HTML template ==="
rg -n "RunsetDetails_Content|GeneralDetails_Headers|GeneralDetails_Data|ExecutionGeneralDetails" Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html
echo ""
echo "=== Placeholder replacements in C# code ==="
rg -n "Replace.*GeneralDetails|Replace.*ExecutionGeneralDetails|Replace.*RunsetDetails" Ginger/GingerCoreNET/Reports/Repository: Ginger-Automation/Ginger
Length of output: 1348
🏁 Script executed:
#!/bin/bash
# Check if old placeholders exist in the template
echo "=== All placeholder-like content in EmailExecutionReport.html ==="
rg -n "{GeneralDetails|{ExecutionGeneralDetails|{RunsetDetails|{RunSetGeneralDetails" Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html
echo ""
echo "=== Context around line 280 (RunsetDetails_Content) ==="
sed -n '270,290p' Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.htmlRepository: Ginger-Automation/Ginger
Length of output: 1405
🏁 Script executed:
#!/bin/bash
# Check if {RunsetDetails_Content} is referenced anywhere in C# code
echo "=== References to RunsetDetails_Content in C# code ==="
rg "RunsetDetails_Content" Ginger/GingerCoreNET/Reports/
echo ""
echo "=== Check the full context of placeholder replacements in GingerExecutionReport.cs ==="
sed -n '295,310p' Ginger/GingerCoreNET/Reports/GingerExecutionReport.csRepository: Ginger-Automation/Ginger
Length of output: 1691
Critical: {RunsetDetails_Content} placeholder is never populated by the backend.
The template now uses {RunsetDetails_Content}, but GingerExecutionReport.cs (lines 301-304) still injects content into the old placeholders ({GeneralDetails_Headers}, {GeneralDetails_Data}, {ExecutionGeneralDetails_Headers}, {ExecutionGeneralDetails_Data}), which no longer exist in the template. The "RUNSET DETAILS" section will render empty in generated reports.
Update GingerExecutionReport.cs to replace the new {RunsetDetails_Content} placeholder with the generated content.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Ginger/GingerCoreNET/Reports/GingerExecutionReport/EmailExecutionReport.html`
around lines 275 - 280, The template now expects {RunsetDetails_Content} but
GingerExecutionReport.cs still writes into {GeneralDetails_Headers},
{GeneralDetails_Data}, {ExecutionGeneralDetails_Headers}, and
{ExecutionGeneralDetails_Data}; update the report-generation code in
GingerExecutionReport.cs to assemble the runset details HTML (the combined
content currently being produced for those old placeholders) and inject it into
the {RunsetDetails_Content} placeholder instead of the obsolete placeholders so
the "RUNSET DETAILS" section is populated.
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| CodeStyle | 3 minor |
🟢 Metrics 14 complexity
Metric Results Complexity 14
TIP This summary will be updated as you push new changes. Give us feedback
Summary by CodeRabbit
Bug Fixes
Style