diff --git a/.gitleaksignore b/.gitleaksignore index bfd42dd73d3..20f762104db 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -4,3 +4,5 @@ cd9c0efec38c5d63053dd865e5d4e207c0760d91:docs/guides/Perform_static_analysis.md: edcce0d54ce30fe8797a5f27ea13eb48f597462b:performance-tests/reporting-journey.jmx:ipv4:37 954013eeb7f6dce8cb837f2b825c910ac6b9bafc:performance-tests/give-or-refuse-consent-journey.jmx:ipv4:75 236d121ec520247f72d13b1d2119c0fde50cc85d:performance-tests/nurse-journey.jmx:ipv4:36 +31ae9cf7f06eeb2929dc92cda89ba4b7b38f9d36:performance-tests/upload-cohort-data.jmx:ipv4:35 + diff --git a/performance-tests/upload-cohort-data.jmx b/performance-tests/upload-cohort-data.jmx new file mode 100644 index 00000000000..1917eebef61 --- /dev/null +++ b/performance-tests/upload-cohort-data.jmx @@ -0,0 +1,660 @@ + + + + + This test plan was created by the BlazeMeter converter v.${project.version}. Please contact support@blazemeter.com for further support. + + + + + + + + + sec-ch-ua + "Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134" + + + sec-ch-ua-mobile + ?0 + + + Accept + text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 + + + Upgrade-Insecure-Requests + 1 + + + sec-ch-ua-platform + "MacOS" + + + User-Agent + Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 + + + Authorization + Basic ${AuthToken} + + + + + + + + BaseDirectory + ${__P(Directory, ${__groovy(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__groovy(File.separator,)})} + = + + + FileName + ${__P(FileName, perf-test-cohort-import-A9A5A-hpv-1k.csv)} + = + + + RampUp + ${__P(RampUp, 1)} + = + + + Duration + ${__P(Duration, 3600)} + = + + + AuthToken + ${__P(AuthToken, Null)} + = + + + Threads + ${__P(Threads, 1)} + = + + + Loops + ${__P(Loops, -1)} + = + + + + + + qa.mavistesting.com + https + + + + + + + + + + true + false + + + + + false + + + + + true + false + + + + true + false + false + + + + ${Threads} + ${RampUp} + ${Duration} + 0 + false + true + startnextloop + + ${Loops} + false + + + + + false + + + + 0 + https + start + true + GET + true + false + + + + + + + + false + + + + 0 + https + users/sign-in + true + GET + true + false + + + + + + + false + Authenticity_Token + <input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + ${__Random(3000,5000,)} + + + + + + false + + + + 0 + https + users/sign-in + true + POST + true + false + + + + true + user[email] + nurse.jackie@example.org + = + true + + + true + user[password] + nurse.jackie@example.org + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/users/organisations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + ${__Random(20000,35000,)} + + + + + + false + + + + 0 + https + users/organisations + true + POST + true + false + + + + true + organisation_id + 2 + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(3000,5000,)} + + + + + + false + + + + imports + true + GET + true + false + + + + + + + ${__Random(5000,10000,)} + + + + + + false + + + + imports/new + true + GET + true + false + + + + + + + ${__Random(5000,10000,)} + + + + false + Authenticity_Token + <form action="/imports" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + + false + + + + imports + true + POST + true + false + + + + true + type + children + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(5000,10000,)} + + + + false + Authenticity_Token + <form enctype="multipart/form-data" action="/cohort-imports" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + + false + + + + cohort-imports + POST + true + + + + false + ------WebKitFormBoundary${BoundaryId} +Content-Disposition: form-data; name="authenticity_token" + +${Authenticity_Token} +------WebKitFormBoundary${BoundaryId} +Content-Disposition: form-data; name="cohort_import[csv]"; filename="${FileName}" +Content-Type: text/csv + +${__FileToString(${BaseDirectory}${FileName},,)} +------WebKitFormBoundary${BoundaryId}-- + = + + + + + + + + + content-type + multipart/form-data; boundary=----WebKitFormBoundary${__RandomString(16,1234567890qweriopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM,BoundaryId)} + + + referer + https://qa.mavistesting.com/cohort-imports/new + + + accept-encoding + gzip, deflate, br, zstd + + + accept-language + en-GB,en-US;q=0.9,en;q=0.8 + + + cache-control + max-age=0 + + + + + + ${__Random(25000,40000,)} + + + + + imports + GET + false + + + + + + + + <div class="govuk-notification-banner govuk-notification-banner--success" data-module="govuk-notification-banner" role="alert" aria-labelledby="govuk-notification-banner-title"> + + + Assertion.response_data + false + 16 + + + + true + + + vars.put("CompletedStatus","NotYetCompleted") + groovy + + + + false + CohortImportId + <a class="nhsuk-link" href="/cohort-imports/(\d+)"> + $1$ + CohortImportId_NotFound + false + 1 + + + + false + LogOut_Authenticity_Token + <form class="button_to" method="post" action="/logout"><input type="hidden" name="_method" value="delete" autocomplete="off" /><button class="app-header__account-button" type="submit">Log out</button><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + LogOut_Authenticity_Token_NotFound + false + 1 + + + + false + true + true + false + + + + + + true + + + + ${__javaScript("${CompletedStatus}" != "Completed",)} + + + + cohort-imports/${CohortImportId} + true + GET + true + false + + + + + + + false + CompletedStatus + <strong class="nhsuk-tag nhsuk-tag--green">(Completed)</strong> + $1$ + NotCompletedYet + false + 1 + + + + false + LogOut_Authenticity_Token + <form class="button_to" method="post" action="/logout"><input type="hidden" name="_method" value="delete" autocomplete="off" /><button class="app-header__account-button" type="submit">Log out</button><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + LogOut_Authenticity_Token_NotFound + false + 1 + + + + + 1 + 0 + 0 + + + + 1000 + + + + groovy + + + true + prev.setIgnore(); + + + + + + + false + + + + logout + true + POST + true + false + + + + true + _method + delete + = + true + + + true + authenticity_token + ${LogOut_Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + 9541 + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + + +