diff --git a/.github/workflows/perf-test-with-data.yml b/.github/workflows/perf-test-with-data.yml index d1b759883b7..6ed934fb2c8 100644 --- a/.github/workflows/perf-test-with-data.yml +++ b/.github/workflows/perf-test-with-data.yml @@ -85,32 +85,33 @@ jobs: import_output_dir=import-output echo "Placeholder step for file import" - - name: Run Consent Journey for imported records (2K records) - run: | - mkdir -p consent-output - consent_output_dir=consent-output - jmeter/bin/jmeter -n -t performance-tests/E2E/consent-journey.jmx \ - -l $consent_output_dir/samples.jtl \ - -j $consent_output_dir/jmeter.log \ - -e -o $consent_output_dir/consent-report \ - -JURN=${{inputs.urn}} \ - -JAuthToken=${{secrets.HTTP_AUTH_TOKEN_FOR_TESTS}} \ - -JInputFile=${{inputs.input_file}} +# - name: Run Consent Journey for imported records (2K records) +# run: | +# mkdir -p consent-output +# consent_output_dir=consent-output +# jmeter/bin/jmeter -n -t performance-tests/E2E/consent-journey.jmx \ +# -l $consent_output_dir/samples.jtl \ +# -j $consent_output_dir/jmeter.log \ +# -e -o $consent_output_dir/consent-report \ +# -JURN=${{inputs.urn}} \ +# -JAuthToken=${{secrets.HTTP_AUTH_TOKEN_FOR_TESTS}} \ +# -JInputFile=${{inputs.input_file}} - name: Run nurse journey JMeter test run: | mkdir -p nurse-output nurse_output_dir=nurse-output -# jmeter/bin/jmeter -n -t performance-tests/nurse-journey.jmx \ -# -l $nurse_output_dir/samples.jtl \ -# -j $nurse_output_dir/jmeter.log \ -# -e -o $nurse_output_dir/report \ -# -JSessionSlug=${{inputs.session_slug}} \ -# -JAuthToken=${{secrets.HTTP_AUTH_TOKEN_FOR_TESTS}} \ -# -JDuration=${{inputs.duration}} \ -# -JThreads=${{inputs.threads}} \ -# -JRampUp=${{inputs.ramp_up}} \ -# -JVaccinationLoop=${{inputs.vaccination_loop}} + jmeter/bin/jmeter -n -t performance-tests/nurse-journey.jmx \ + -l $nurse_output_dir/samples.jtl \ + -j $nurse_output_dir/jmeter.log \ + -e -o $nurse_output_dir/report \ + -JURN=${{inputs.urn}} \ + -JAuthToken=${{secrets.HTTP_AUTH_TOKEN_FOR_TESTS}} \ + -JDuration=${{inputs.duration}} \ + -JThreads=${{inputs.threads}} \ + -JRampUp=${{inputs.ramp_up}} \ + -JVaccinationLoop=${{inputs.vaccination_loop}} + -JInputFile=${{inputs.input_file}} - name: Upload consent journey JMeter output uses: actions/upload-artifact@v4 @@ -119,9 +120,9 @@ jobs: path: consent-output if-no-files-found: error -# - name: Upload nurse journey JMeter output -# uses: actions/upload-artifact@v4 -# with: -# name: jmeter-nurse-journey-output-${{ env.timestamp }} -# path: nurse-output -# if-no-files-found: error + - name: Upload nurse journey JMeter output + uses: actions/upload-artifact@v4 + with: + name: jmeter-nurse-journey-output-${{ env.timestamp }} + path: nurse-output + if-no-files-found: error diff --git a/performance-tests/E2E/consent-journey.jmx b/performance-tests/E2E/consent-journey.jmx index 250637e4447..81ef799a58a 100644 --- a/performance-tests/E2E/consent-journey.jmx +++ b/performance-tests/E2E/consent-journey.jmx @@ -5,6 +5,8 @@ + false + false @@ -21,12 +23,12 @@ , UTF-8 - C:/Users/simon/Documents/repos/manage-vaccinations-in-schools-testing-main/performance-tests/E2E/cohort-file-for-testing.csv + ${BaseDirectory}${InputFile} true false - true + false shareMode.all - false + true @@ -54,7 +56,7 @@ RampUp - ${__P(RampUp, 1)} + ${__P(RampUp, 10)} = @@ -74,13 +76,13 @@ URN - 114624 + ${__P(URN, 114624)} = - + Accept @@ -105,7 +107,7 @@ - + qa.mavistesting.com https @@ -114,6 +116,12 @@ + + + false + false + + @@ -121,12 +129,6 @@ false - - - true - false - - true false @@ -188,16 +190,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) groovy - - - true - - - prev.setIgnore(); - groovy - - - + false @@ -216,7 +209,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false @@ -245,7 +238,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false @@ -305,7 +298,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false @@ -337,7 +330,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + Content-Type @@ -348,11 +341,11 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false - + 0 https sessions @@ -381,7 +374,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) false - + true true 6 @@ -414,7 +407,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false Authenticity_Token name="authenticity_token" value="(.*?)" @@ -435,7 +428,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + true true 6 @@ -468,7 +461,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + false Authenticity_Token name="authenticity_token" value="(.*?)" @@ -478,7 +471,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) 2 - + <title>When will sessions be held? – Manage vaccinations in schools</title> @@ -488,7 +481,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) 16 - + false unuseddatesArray session_dates_attributes\]\[(\d*)\]\[value\(3i\)\]".*?value="(\d*)">[\s\S]*?\[value\(2i\)\]".*?value="(\d*)">[\s\S]*?\[value\(1i\)\]".*?value="(\d*)"[\s\S]*?value="(\d*)" @@ -499,7 +492,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) This regex gets all the dates that are unused and therefore have day, month, year and ID - + false useddatesArray cannot be changed[\s\S]*?value=\"(\d*)"[\s\S]*?attributes\]\[(\d*)\] @@ -511,7 +504,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + true true 6 @@ -533,7 +526,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + sec-ch-ua @@ -560,7 +553,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) 1 - + <title>When will sessions be held? – Manage vaccinations in schools</title> @@ -571,7 +564,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + This adds tomorrow as a session date, if it already exists then it will intentionally fail true true @@ -594,7 +587,7 @@ vars.put("ConsentSession", cohortCodes.get(vars.get("URN"))) - + groovy @@ -655,7 +648,7 @@ vars.put("postbody",postbody); 1 - + sec-ch-ua @@ -672,7 +665,7 @@ vars.put("postbody",postbody); - + <title>Edit session – Manage vaccinations in schools</title> Enter a different date to the other session dates @@ -685,11 +678,11 @@ vars.put("postbody",postbody); - + false - + 0 https sessions @@ -702,7 +695,7 @@ vars.put("postbody",postbody); - + true true 6 @@ -735,7 +728,7 @@ vars.put("postbody",postbody); - + false Authenticity_Token Set session in progress for today</button><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" @@ -745,7 +738,7 @@ vars.put("postbody",postbody); 1 - + Manage vaccinations in schools @@ -756,7 +749,7 @@ vars.put("postbody",postbody); - + 0 https sessions/${ConsentSession}/make-in-progress @@ -784,7 +777,7 @@ vars.put("postbody",postbody); - + Content-Type @@ -793,7 +786,7 @@ vars.put("postbody",postbody); - + <p class="govuk-notification-banner__heading">Session is now in progress</p> @@ -806,13 +799,12 @@ vars.put("postbody",postbody); - + ${Threads} ${RampUp} ${Duration} 0 false - true startnextloop ${Loops} @@ -820,7 +812,20 @@ vars.put("postbody",postbody); - + + 100 + 100 + + + + groovy + + + true + log.info(vars.get("CHILD_LAST_NAME") + " " + vars.get("CHILD_FIRST_NAME")); + + + true @@ -889,7 +894,7 @@ vars.put("SchoolYear", String.valueOf(schoolYear)); groovy - + true @@ -898,12 +903,6 @@ vars.put("SchoolYear", String.valueOf(schoolYear)); - - false - true - false - - ${__javaScript(parseInt("${SchoolYear}") >= 8,)} false @@ -2215,7 +2214,7 @@ else - + ${__javaScript(parseInt("${SchoolYear}") >= 9,)} false false @@ -3753,7 +3752,7 @@ else - + false saveConfig diff --git a/performance-tests/E2E/nurse-journey.jmx b/performance-tests/E2E/nurse-journey.jmx new file mode 100644 index 00000000000..3699db32f78 --- /dev/null +++ b/performance-tests/E2E/nurse-journey.jmx @@ -0,0 +1,3363 @@ + + + + + + + + + + + + + sec-ch-ua + "Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133" + + + 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 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 + + + Authorization + Basic ${AuthToken} + + + + + + + + AuthToken + ${__P(AuthToken, bWFuYWdlOnZhY2NpbmF0aW9ucw==)} + = + + + UrnMapping + urn-mapping.csv + = + + + ReadOnlyMode + ${__P(ReadOnlyMode,False)} + = + + + Loops + ${__P(Loops, 1)} + = + + + Threads + ${__P(Threads, 1)} + = + + + + VaccinationLoop + ${__P(VaccinationLoop, 1)} + = + + + RampUp + ${__P(RampUp, 900)} + = + + + Duration + ${__P(Duration, 3600)} + = + + + BaseDirectory + ${__P(Directory, ${__groovy(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__groovy(File.separator,)})} + = + + + InputFile + ${__P(FileName, cohort-file-for-testing.csv)} + = + + + URN + ${__P(URN, 114624)} + = + + + + + + , + UTF-8 + ${BaseDirectory}${InputFile} + true + false + false + shareMode.all + true + + + + + qa.mavistesting.com + https + + + + + + + + + + true + false + + + + + false + + + + + true + false + + + + true + false + false + + + + 1 + 1 + true + continue + + 1 + false + + + + + ${Threads} + ${RampUp} + ${Duration} + 0 + false + true + startnextloop + + ${Loops} + false + + + + + true + + + import java.util.HashMap; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.io.FileReader; +import java.io.IOException; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.time.format.*; + +BufferedReader reader; +HashMap<String, String> cohortCodes = new HashMap<String,String>(); + +//Opens file to populate HashMap of URNs and Slug +try { + reader = new BufferedReader(new FileReader(vars.get("BaseDirectory") + vars.get("UrnMapping"))); + String line = reader.readLine(); + + line = reader.readLine(); + + while (line != null) + { + String[] lineSplit = line.split(","); + + cohortCodes.put(lineSplit[1],lineSplit[0]) + + line = reader.readLine(); + } + + reader.close(); +} +catch (IOException e) +{ + e.printStackTrace(); +} + +//Uses HashMap above to cross reference URN code in feeder file to use a specific slug in URL +vars.put("SessionId", cohortCodes.get(vars.get("URN"))); + + groovy + + + + 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 + + + + 0 + https + sessions + true + GET + true + false + + + + + + + false + SessionId + <a class="nhsuk-link" href="/sessions/(\w+)[\S\s]+Cohort</span>\s+[1-9]+ + $1$ + SessionId_NotFound + false + 1 + + + + ${__Random(7000,12000,)} + + + + + + ${__jexl3("${ReadOnlyMode}" == "True")} + false + false + + + + false + + + + 0 + https + sessions/${SessionId} + true + GET + true + false + + + + + + + false + SessionId + <a class="nhsuk-link" href="/sessions/(\w+)[\S\s]+Cohort</span>\s+[1-9]+ + $1$ + SessionId_NotFound + false + 1 + + + + + vaccinations given for HPV + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/consent + true + GET + true + false + + + + + + + + Showing <b>1</b> to <b>50</b> of + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/triage + true + GET + true + false + + + + + + + + Showing <b>1</b> to <b>50</b> of + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/register + true + GET + true + false + + + + + + + + You can register attendance when a session is in progress. + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/record + true + GET + true + false + + + + + + + + You can record vaccinations when a session is in progress + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/outcome + true + GET + true + false + + + + + + + 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 + + + + + Showing <b>1</b> to <b>50</b> of + + + Assertion.response_data + false + 16 + + + + + + + ${__jexl3("${ReadOnlyMode}" == "False")} + false + false + + + + ${VaccinationLoop} + + + + false + + + + 0 + https + sessions/${SessionId} + true + GET + true + false + + + + + + + ${__Random(10000,15000,)} + + + + + 0 + https + sessions/${SessionId}/register + true + GET + true + false + + + + + + + ${__Random(3000,5000,)} + + + + + 0 + https + sessions/${SessionId}/register?search_form%5Bq%5D=${CHILD_FIRST_NAME}+${CHILD_LAST_NAME}&search_form%5Bregister_status%5D=&search_form%5Byear_groups%5D%5B%5D=&search_form%5Bdate_of_birth_day%5D=&search_form%5Bdate_of_birth_month%5D=&search_form%5Bdate_of_birth_year%5D=&search_form%5Bmissing_nhs_number%5D=0 + true + GET + true + false + + + + + + + ${__Random(10000,15000,)} + + + + false + PatientId + <a class="nhsuk-card__link" href="\/sessions\/.*?\/patients\/(.*?)\/hpv + $1$ + PatientId_NotFound + false + 1 + + + + + ${__jexl3("${PatientId}" == "PatientId_NotFound")} + false + true + + + + 0 + 0 + 0 + + + + true + + + log.error("No further patients") + groovy + + + + + + 0 + https + sessions/${SessionId}/register/${PatientId}/present + true + POST + true + false + + + + true + ${Authenticity_Token} + = + true + authenticity_token + + + + + + + ${__Random(10000,15000,)} + + + + + is attending today’s session.</p> + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv?return_to=consent + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + VaccinatedStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Vaccinated)\s+</h2 + $1$ + NotVaccinated + false + 1 + + + + false + ResponseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(No response)\s+</h2> + $1$ + Responded + false + 1 + + + + false + ReadyForNurseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Ready for nurse)\s+</h2 + $1$ + NotReadyForNurse + false + 1 + + + + false + VaccinationPages + data-turbo-action="replace" href="/sessions/${SessionId}/patients/${PatientId}/(\w+) + $1$ + VaccinationPages_NotFound + false + -1 + + + + false + Authenticity_Token + <form class="button_to" method="post" action="/sessions/${SessionId}/patients/${PatientId}/hpv/consents"><button class="nhsuk-button app-button--secondary" data-module="nhsuk-button" new_tab="false" type="submit">Get consent response</button><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" /></form> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + false + Vaccinate_Authenticity_Token + <form class="nhsuk-card" action="/sessions/\w+/patients/\d+/\w+/vaccinations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Vaccinate_Authenticity_Token_NotFound + false + 1 + + + + + false + true + false + + + + + ${__jexl3("${VaccinatedStatus}" == "NotVaccinated")} + false + false + + + + ${__jexl3("${ResponseStatus}" != "Responded")} + false + false + + + + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv/consents + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/who" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + false + ExistingContact + value="(\d+)" name="draft_consent\[new_or_existing_contact\]" .><label for="draft-consent-new-or-existing-contact-\1-field" class="nhsuk-label nhsuk-radios__label">([A-z0-9-&#;\s]*?)\s\(\w+\)</label><div class="nhsuk-hint nhsuk-radios__hint" id="draft-consent-new-or-existing-contact-\1-hint">([A-z\.@\-_]*?) / ([0-9 ]*?)</div></div> + $1$ + ExistingContact_NotFound + false + 1 + + + + groovy + + + true + vars.put("ParentId",vars.get("ExistingContact_g1")); +vars.put("ParentName",vars.get("ExistingContact_g2")); +vars.put("ParentEmail",vars.get("ExistingContact_g3")); +vars.put("ParentPhone",vars.get("ExistingContact_g4")); + + + + + 0 + https + draft-consent/who + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ${ExistingContact} + = + true + draft_consent[new_or_existing_contact] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/parent-details" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/parent-details + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ${ParentEmail} + = + true + draft_consent[parent_email] + + + true + ${ParentPhone} + = + true + draft_consent[parent_phone] + + + true + 0 + = + true + draft_consent[parent_phone_receive_updates] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/route" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/route + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + + = + true + draft_consent[route] + + + true + phone + = + true + draft_consent[route] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/agree" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/agree + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + given + = + true + draft_consent[response] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/questions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/questions + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + + = + true + draft_consent[question_0][notes] + + + true + no + = + true + draft_consent[question_0][response] + + + true + + = + true + draft_consent[question_1][notes] + + + true + no + = + true + draft_consent[question_1][response] + + + true + + = + true + draft_consent[question_2][notes] + + + true + no + = + true + draft_consent[question_2][response] + + + true + + = + true + draft_consent[question_3][notes] + + + true + no + = + true + draft_consent[question_3][response] + + + true + + = + true + draft_consent[question_4][notes] + + + true + no + = + true + draft_consent[question_4][response] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/triage" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/triage + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ready_to_vaccinate + = + true + draft_consent[triage_status] + + + true + 1293h1-dsbahdoqsjd12301-qdsaa + = + true + draft_consent[triage_notes] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form class="button_to" method="post" action="/draft-consent/confirm"><input type="hidden" name="_method" value="put" autocomplete="off" /><button class="nhsuk-button" data-module="nhsuk-button" data-prevent-double-click="true" new_tab="false" type="submit">Confirm</button><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /></form> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/confirm + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + + <p class="govuk-notification-banner__heading">Consent recorded for + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv?return_to=consent + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Vaccinate_Authenticity_Token + <form class="nhsuk-card" action="/sessions/\w+/patients/\d+/\w+/vaccinations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Vaccinate_Authenticity_Token_NotFound + false + 1 + + + + + + + ${__jexl3("${ReadyForNurseStatus}" == "Ready for nurse")} + false + false + + + + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv/triages/new + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/sessions/\w+/patients/\d+/hpv/triages" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv/triages + true + POST + true + false + + + + true + ${Authenticity_Token} + = + true + authenticity_token + + + false + ready_to_vaccinate + = + true + triage[status] + + + false + ${__RandomString(64,ZXCVBNMASDFGHJKLQWERTIOPzxcvbnmasdfghjklqwertyuiop12346890\,./-,)} + = + true + triage[notes] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(17000,25000,)} + + + + + Triage outcome updated + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Vaccinate_Authenticity_Token + <form class="nhsuk-card" action="/sessions/\w+/patients/\d+/\w+/vaccinations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Vaccinate_Authenticity_Token_NotFound + false + 1 + + + + + + + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/hpv/vaccinations + true + POST + true + false + + + + true + authenticity_token + ${Vaccinate_Authenticity_Token} + = + true + + + false + vaccinate_form[knows_vaccination] + true + = + true + + + false + vaccinate_form[not_already_had] + true + = + true + + + false + vaccinate_form[feeling_well] + true + = + true + + + false + vaccinate_form[no_allergies] + true + = + true + + + false + true + = + true + vaccinate_form[not_pregnant] + + + false + vaccinate_form[pre_screening_notes] + ${__RandomString(64,QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm \,.;1234567890,)} + = + true + + + false + vaccinate_form[administered] + true + = + true + + + false + vaccinate_form[delivery_site] + right_arm_upper_position + = + true + + + false + vaccinate_form[delivery_method] + intramuscular + = + true + + + true + vaccinate_form[dose_sequence] + 1 + = + true + + + true + vaccinate_form[programme_id] + 2 + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/draft-vaccination-record/batch" .*? name="authenticity_token" value="(.*?)" + $1$ + Authenticity_Token_NotFound + false + 1 + + + + false + BatchId + <input id="draft-vaccination-record-batch-id-(\d+)-field" class="nhsuk-radios__input" + $1$ + BatchId_NotFound + false + 1 + + + + ${__Random(35000,48000,)} + + + + + Which batch did you use? + + + Assertion.response_data + false + 16 + + + + + 0 + https + draft-vaccination-record/batch + true + POST + true + false + + + + true + _method + put + = + true + + + true + draft_vaccination_record[batch_id] + ${BatchId} + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/draft-vaccination-record/confirm" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + ${__Random(5000,8000,)} + + + + false + true + true + false + + + + + Check and confirm + + + Assertion.response_data + false + 16 + + + + + 0 + https + draft-vaccination-record/confirm + true + POST + true + false + + + + true + _method + put + = + true + + + true + draft_vaccination_record[notes] + ${__RandomString(64,QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm \,.;1234567890,)} + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + 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 + + + + ${__Random(35000,48000,)} + + + + + Vaccination outcome recorded for + + + Assertion.response_data + false + 16 + + + + + + + ${__jexl3("${VaccinatedStatus}" == "Vaccinated")} + false + true + + + + true + true + 200 + OK + Dummy Sampler used to simulate requests and responses +without actual network activity. This helps debugging tests. + Dummy Sampler used to simulate requests and responses +without actual network activity. This helps debugging tests. + 1 + 1 + 1 + + org.apache.jmeter.samplers.SampleResult + + + + + VaccinationPages + VaccinationPage + true + 1 + 3 + Cycles through whether the patient can take the MENACWY or IPV, if they're too young they won't + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}?return_to=consent + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + VaccinatedStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Vaccinated)\s+</h2 + $1$ + NotVaccinated + false + 1 + + + + false + ResponseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(No response)\s+</h2> + $1$ + Responded + false + 1 + + + + false + ReadyForNurseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Ready for nurse)\s+</h2 + $1$ + Not Ready for nurse + false + 1 + + + + false + VaccinationPages + data-turbo-action="replace" href="/sessions/${SessionId}/patients/${PatientId}/(\w+) + $1$ + VaccinationPages_NotFound + false + -1 + + + + false + true + true + false + + + + false + Authenticity_Token + <form class="button_to" method="post" action="/sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/consents"><button class="nhsuk-button app-button--secondary" data-module="nhsuk-button" new_tab="false" type="submit">Get consent response</button><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" /></form> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + ${__jexl3("${VaccinatedStatus}" == "NotVaccinated")} + false + false + + + + ${__jexl3("${ResponseStatus}" != "Responded")} + false + false + + + + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/consents + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/who" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + false + ExistingContact + value="(\d+)" name="draft_consent\[new_or_existing_contact\]" .><label for="draft-consent-new-or-existing-contact-\1-field" class="nhsuk-label nhsuk-radios__label">([A-z0-9-&#;\s]*?)\s\(\w+\)</label><div class="nhsuk-hint nhsuk-radios__hint" id="draft-consent-new-or-existing-contact-\1-hint">([A-z\.@\-_]*?) / ([0-9 ]*?)</div></div> + $1$ + ExistingContact_NotFound + false + 1 + + + + groovy + + + true + vars.put("ParentId",vars.get("ExistingContact_g1")); +vars.put("ParentName",vars.get("ExistingContact_g2")); +vars.put("ParentEmail",vars.get("ExistingContact_g3")); +vars.put("ParentPhone",vars.get("ExistingContact_g4")); + + + + + 0 + https + draft-consent/who + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ${ExistingContact} + = + true + draft_consent[new_or_existing_contact] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/parent-details" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/parent-details + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ${ParentEmail} + = + true + draft_consent[parent_email] + + + true + ${ParentPhone} + = + true + draft_consent[parent_phone] + + + true + 0 + = + true + draft_consent[parent_phone_receive_updates] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/route" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/route + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + + = + true + draft_consent[route] + + + true + phone + = + true + draft_consent[route] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/agree" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/agree + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + given + = + true + draft_consent[response] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/questions" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/questions + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + + = + true + draft_consent[question_0][notes] + + + true + no + = + true + draft_consent[question_0][response] + + + true + + = + true + draft_consent[question_1][notes] + + + true + no + = + true + draft_consent[question_1][response] + + + true + + = + true + draft_consent[question_2][notes] + + + true + no + = + true + draft_consent[question_2][response] + + + true + + = + true + draft_consent[question_3][notes] + + + true + no + = + true + draft_consent[question_3][response] + + + true + + = + true + draft_consent[question_4][notes] + + + true + no + = + true + draft_consent[question_4][response] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/draft-consent/triage" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/triage + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + true + ready_to_vaccinate + = + true + draft_consent[triage_status] + + + true + ${__RandomString(64,ZXCVBNMASDFGHJKLQWERTIOPzxcvbnmasdfghjklqwertyuiop12346890\,./-,)} + = + true + draft_consent[triage_notes] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form class="button_to" method="post" action="/draft-consent/confirm"><input type="hidden" name="_method" value="put" autocomplete="off" /><button class="nhsuk-button" data-module="nhsuk-button" data-prevent-double-click="true" new_tab="false" type="submit">Confirm</button><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /></form> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + draft-consent/confirm + true + POST + true + false + + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + true + put + = + true + _method + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + + <p class="govuk-notification-banner__heading">Consent recorded for + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}?return_to=consent + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + VaccinatedStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Vaccinated)\s+</h2 + $1$ + NotVaccinated + false + 1 + + + + false + ResponseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(No response)\s+</h2> + $1$ + Responded + false + 1 + + + + false + ReadyForNurseStatus + <h2 class="nhsuk-card__heading nhsuk-heading-s nhsuk-card__heading--feature">\s+(Ready for nurse)\s+</h2 + $1$ + Not Ready for nurse + false + 1 + + + + false + VaccinationPages + data-turbo-action="replace" href="/sessions/${SessionId}/patients/${PatientId}/(\w+) + $1$ + VaccinationPages_NotFound + false + -1 + + + + false + Authenticity_Token + <form class="button_to" method="post" action="/sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/consents"><button class="nhsuk-button app-button--secondary" data-module="nhsuk-button" new_tab="false" type="submit">Get consent response</button><input type="hidden" name="authenticity_token" value="(.*?)" autocomplete="off" /></form> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + false + Vaccinate_Authenticity_Token + <form class="nhsuk-card" action="/sessions/\w+/patients/\d+/\w+/vaccinations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Vaccinate_Authenticity_Token_NotFound + false + 1 + + + + + + + ${__jexl3("${ReadyForNurseStatus}" == "Ready for nurse")} + false + false + + + + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/triages/new + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Authenticity_Token + <form action="/sessions/\w+/patients/\d+/\w+/triages" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Authenticity_Token_NotFound + false + 1 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/triages + true + POST + true + false + + + + true + ${Authenticity_Token} + = + true + authenticity_token + + + false + ready_to_vaccinate + = + true + triage[status] + + + false + ${__RandomString(64,ZXCVBNMASDFGHJKLQWERTIOPzxcvbnmasdfghjklqwertyuiop12346890\,./-,)} + = + true + triage[notes] + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(17000,25000,)} + + + + + Triage outcome updated + + + Assertion.response_data + false + 16 + + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage} + true + GET + true + false + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + ${__Random(7000,13000,)} + + + + false + Vaccinate_Authenticity_Token + <form class="nhsuk-card" action="/sessions/\w+/patients/\d+/\w+/vaccinations" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="(.+?)" autocomplete="off" /> + $1$ + Vaccinate_Authenticity_Token_NotFound + false + 1 + + + + + + + false + + + + ${__jexl3("${VaccinationPage}" == "menacwy")} + false + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/vaccinations + true + POST + true + false + + + + true + authenticity_token + ${Vaccinate_Authenticity_Token} + = + true + + + false + vaccinate_form[knows_vaccination] + true + = + true + + + false + vaccinate_form[not_already_had] + true + = + true + + + false + vaccinate_form[feeling_well] + true + = + true + + + false + vaccinate_form[no_allergies] + true + = + true + + + false + true + = + true + vaccinate_form[not_taking_medication] + + + false + vaccinate_form[pre_screening_notes] + ${__RandomString(64,QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm \,.;1234567890,)} + = + true + + + false + vaccinate_form[administered] + true + = + true + + + false + vaccinate_form[delivery_site] + right_arm_upper_position + = + true + + + false + vaccinate_form[delivery_method] + intramuscular + = + true + + + true + vaccinate_form[dose_sequence] + + = + true + + + true + vaccinate_form[programme_id] + 4 + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/draft-vaccination-record/batch" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + false + BatchId + <input id="draft-vaccination-record-batch-id-(\d+)-field" class="nhsuk-radios__input" + $1$ + BatchId_NotFound + false + 1 + + + + ${__Random(35000,48000,)} + + + + + Which batch did you use? + + + Assertion.response_data + false + 16 + + + + + + ${__jexl3("${VaccinationPage}" == "td_ipv")} + false + false + + + + 0 + https + sessions/${SessionId}/patients/${PatientId}/${VaccinationPage}/vaccinations + true + POST + true + false + + + + true + authenticity_token + ${Vaccinate_Authenticity_Token} + = + true + + + false + vaccinate_form[knows_vaccination] + true + = + true + + + false + vaccinate_form[not_already_had] + true + = + true + + + false + vaccinate_form[feeling_well] + true + = + true + + + false + vaccinate_form[no_allergies] + true + = + true + + + false + true + = + true + vaccinate_form[not_taking_medication] + + + false + true + = + true + vaccinate_form[not_pregnant] + + + false + vaccinate_form[pre_screening_notes] + ${__RandomString(64,QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm \,.;1234567890,)} + = + true + + + false + vaccinate_form[administered] + true + = + true + + + false + vaccinate_form[delivery_site] + right_arm_upper_position + = + true + + + false + vaccinate_form[delivery_method] + intramuscular + = + true + + + true + vaccinate_form[dose_sequence] + + = + true + + + true + vaccinate_form[programme_id] + 3 + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/draft-vaccination-record/batch" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + false + BatchId + <input id="draft-vaccination-record-batch-id-(\d+)-field" class="nhsuk-radios__input" + $1$ + BatchId_NotFound + false + 1 + + + + ${__Random(35000,48000,)} + + + + + Which batch did you use? + + + Assertion.response_data + false + 16 + + + + + + 0 + https + draft-vaccination-record/batch + true + POST + true + false + + + + true + _method + put + = + true + + + true + draft_vaccination_record[batch_id] + ${BatchId} + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + false + Authenticity_Token + <form action="/draft-vaccination-record/confirm" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value=" + " autocomplete="off" /> + Authenticity_Token_NotFound + false + 1 + + + + ${__Random(5000,8000,)} + + + + + Check and confirm + + + Assertion.response_data + false + 16 + + + + + 0 + https + draft-vaccination-record/confirm + true + POST + true + false + + + + true + _method + put + = + true + + + true + draft_vaccination_record[notes] + ${__RandomString(64,QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm \,.;1234567890,)} + = + true + + + true + authenticity_token + ${Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + 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 + + + + ${__Random(35000,48000,)} + + + + + Vaccination outcome recorded for + + + Assertion.response_data + false + 16 + + + + + + + ${__jexl3("${VaccinatedStatus}" == "Vaccinated")} + false + true + + + + true + true + 200 + OK + Dummy Sampler used to simulate requests and responses +without actual network activity. This helps debugging tests. + Dummy Sampler used to simulate requests and responses +without actual network activity. This helps debugging tests. + 1 + 1 + 1 + + org.apache.jmeter.samplers.SampleResult + + + + + + + + false + + + + 0 + https + logout + true + POST + true + false + + + + true + _method + delete + = + true + + + true + authenticity_token + ${LogOut_Authenticity_Token} + = + true + + + + + + + + + Content-Type + application/x-www-form-urlencoded + + + + + + + + + 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 + + + + + + + +