diff --git a/.github/scripts/extract_and_generate_html.sh b/.github/scripts/extract_and_generate_html.sh
new file mode 100755
index 0000000..13870ec
--- /dev/null
+++ b/.github/scripts/extract_and_generate_html.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+# Destination directory path
+destination_dir="doc/gatling"
+
+# Function to copy JS and CSS files
+copy_js_and_css() {
+ mkdir -p "${destination_dir}/js"
+ mkdir -p "${destination_dir}/style"
+ cp -rf "./loading/target/gatling/${1}/js" "${destination_dir}"
+ cp -rf "./loading/target/gatling/${1}/style" "${destination_dir}"
+}
+
+# Function to perform replacements in HTML files
+replace_in_html_files() {
+ search="$1"
+ replace="$2"
+ directory="$3"
+ find "${destination_dir}/${directory}" -type f -name "*.html" -exec sed -i -e "s|$search|$replace|g" {} \;
+}
+
+# Fonction pour extraire et formater les résultats
+generate_html_table() {
+ run="$1"
+ stats_file="./loading/target/gatling/$run/js/stats.json"
+
+ # Extraire les données nécessaires du fichier JSON avec jq
+ tableContent=$(jq -r '
+ (.contents[] | "
+
+ | " + .stats.name + " |
+ " + (.stats.numberOfRequests.ok | tostring) + " |
+ " + (.stats.numberOfRequests.ko | tostring) + " |
+ " + (.stats.minResponseTime.total | tostring) + " |
+ " + (.stats.maxResponseTime.total | tostring) + " |
+ " + (.stats.meanResponseTime.total | tostring) + " |
+ " + (.stats.standardDeviation.total | tostring) + " |
+ " + (.stats.meanNumberOfRequestsPerSecond.total | tostring) + " |
+
"
+ )' "$stats_file")
+
+ # Créer le tableau HTML
+ htmlTable="
+ | Request | Success ✅ | Errors ❌ | Min | Max | Avg. | Std. Dev. | RPS |
+ $tableContent
+
"
+
+ # Imprimer le contenu HTML
+ echo "$htmlTable"
+}
+
+# Read the contents of lastRun.txt and sort it
+last_runs=($(sort -n < loading/target/gatling/lastRun.txt))
+
+# Create the HTML template
+template_file="./.github/scripts/template.html"
+output_file="loading/target/gatling/summary.html"
+cp "$template_file" "$output_file"
+
+# Initialize the content variable
+content=""
+
+# Copy JS and CSS for the first run
+copy_js_and_css "${last_runs[0]}"
+
+# Iterate through the directories obtained from lastRun.txt
+for run in "${last_runs[@]}"; do
+ # Extract name and date from the entry
+ report_name="${run%-*}"
+ timestamp="${run#*-}"
+ year="${timestamp:0:4}"
+ month="${timestamp:4:2}"
+ day="${timestamp:6:2}"
+ hour="${timestamp:8:2}"
+ minute="${timestamp:10:2}"
+ second="${timestamp:12:2}"
+
+ formatted_date="${year}-${month}-${day} ${hour}:${minute}:${second}"
+
+ # Construct the desired output
+ content+=" Results for $report_name at $formatted_date
"
+
+ html_output=$(generate_html_table ${run})
+
+ # Append le contenu de la table à la variable content
+ content+="$html_output"
+
+ # Copy .html and .log files to the destination directory
+ mkdir -p "${destination_dir}/$run"
+ cp -rf "./loading/target/gatling/$run"/* "${destination_dir}/$run"
+
+ # Remove unnecessary directories
+ rm -rf "${destination_dir}/$run"/js
+ rm -rf "${destination_dir}/$run"/style
+
+ # Perform replacements in HTML files
+ replace_in_html_files "src=\"js/" "src=\"../js/" "$run"
+ replace_in_html_files "\"style/" "\"../style/" "$run"
+
+ find "${destination_dir}/${run}" -type f -name "*.html" -exec sed -i 's/details_link\" href=\//details_link\" href=\"\.\//g' {} \;
+
+ replace_in_html_files "details_link\" href=\"" "details_link\" href=\"./" "$run"
+
+ # Add "SUMMARY" link back to the Summary
+ replace_in_html_files '