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
+
+
+
+
+
+
+
+