Merge branch 'develop' into feature/CASH-1042_QA
This commit is contained in:
commit
f1f35c627f
18 changed files with 42 additions and 37 deletions
|
|
@ -51,16 +51,7 @@ stages:
|
||||||
displayName: Run Prettier check
|
displayName: Run Prettier check
|
||||||
|
|
||||||
- stage: TestPr
|
- stage: TestPr
|
||||||
displayName: Run Unit Tests For PullRequest
|
displayName: Run Tests For PullRequest
|
||||||
jobs:
|
|
||||||
- template: templates/digital/vue-jest-run-unit-tests.yml@AzureDevOps
|
|
||||||
parameters:
|
|
||||||
nodeContainer: node
|
|
||||||
npmLocation: $(Build.SourcesDirectory)
|
|
||||||
testResultsFile: junit.xml
|
|
||||||
summaryFileLocation: $(Build.SourcesDirectory)/coverage/cobertura-coverage.xml
|
|
||||||
- stage: TestPrPlaywright
|
|
||||||
displayName: Run Playwright Tests For PullRequest
|
|
||||||
jobs:
|
jobs:
|
||||||
- template: temp/playwright-test.yml
|
- template: temp/playwright-test.yml
|
||||||
parameters:
|
parameters:
|
||||||
|
|
@ -76,6 +67,12 @@ stages:
|
||||||
secrets:
|
secrets:
|
||||||
CCIS_API_AUTH: $(CCIS_API_AUTH)
|
CCIS_API_AUTH: $(CCIS_API_AUTH)
|
||||||
JIRA_API_KEY: $(JIRA_API_KEY)
|
JIRA_API_KEY: $(JIRA_API_KEY)
|
||||||
|
- template: templates/digital/vue-jest-run-unit-tests.yml@AzureDevOps
|
||||||
|
parameters:
|
||||||
|
nodeContainer: node
|
||||||
|
npmLocation: $(Build.SourcesDirectory)
|
||||||
|
testResultsFile: junit.xml
|
||||||
|
summaryFileLocation: $(Build.SourcesDirectory)/coverage/cobertura-coverage.xml
|
||||||
- ${{ else }}:
|
- ${{ else }}:
|
||||||
# Dev Build/Deploy
|
# Dev Build/Deploy
|
||||||
- stage: Dev
|
- stage: Dev
|
||||||
|
|
|
||||||
|
|
@ -260,7 +260,6 @@ ADMIN_SERVICE_API_URL= <br>
|
||||||
SAUCE_USERNAME= <br>
|
SAUCE_USERNAME= <br>
|
||||||
SAUCE_ACCESS_KEY= <br>
|
SAUCE_ACCESS_KEY= <br>
|
||||||
|
|
||||||
|
|
||||||
## CI/CD Integration
|
## CI/CD Integration
|
||||||
The project uses Azure Pipelines for continuous integration with configurations defined in azure-pipelines.yml.
|
The project uses Azure Pipelines for continuous integration with configurations defined in azure-pipelines.yml.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -291,7 +291,6 @@ async function runWorkflow(page: Page, testCase: TestCase) {
|
||||||
// let serviceLocationPage = testCase.pages.serviceLocationPage;
|
// let serviceLocationPage = testCase.pages.serviceLocationPage;
|
||||||
// await serviceLocationPage.handleServiceLocationPage(testCase.testData);
|
// await serviceLocationPage.handleServiceLocationPage(testCase.testData);
|
||||||
|
|
||||||
|
|
||||||
// Schedule appointment
|
// Schedule appointment
|
||||||
let schedulePage = testCase.pages.schedulePage;
|
let schedulePage = testCase.pages.schedulePage;
|
||||||
await schedulePage.handleSchedulePage(testCase.testData);
|
await schedulePage.handleSchedulePage(testCase.testData);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<slot name="modal-footer-slot"></slot>
|
<slot name="modal-footer-slot"></slot>
|
||||||
<modalButtonMain
|
<modalButtonMain
|
||||||
isPrimary
|
:isPrimary="isFooterButtonPrimary"
|
||||||
class="w-100 modal-footer-button"
|
class="w-100 modal-footer-button"
|
||||||
:id="modalId + '-modalbtn'"
|
:id="modalId + '-modalbtn'"
|
||||||
ref="modalButtonMain"
|
ref="modalButtonMain"
|
||||||
|
|
@ -65,6 +65,7 @@ export default {
|
||||||
suppressPageScroll: Boolean,
|
suppressPageScroll: Boolean,
|
||||||
staticBackdrop: Boolean,
|
staticBackdrop: Boolean,
|
||||||
footerButtonDisabled: Boolean,
|
footerButtonDisabled: Boolean,
|
||||||
|
isFooterButtonPrimary: Boolean,
|
||||||
onModalOpenedCallback: {
|
onModalOpenedCallback: {
|
||||||
type: Function,
|
type: Function,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -115,14 +115,16 @@ export default {
|
||||||
&.btn-secondary {
|
&.btn-secondary {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: 1px solid $red;
|
border: 1px solid $blue;
|
||||||
color: $blue;
|
color: $blue;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
transition: all 150ms linear;
|
transition: all 150ms linear;
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
&:hover {
|
&:hover,
|
||||||
|
&:active {
|
||||||
color: $white;
|
color: $white;
|
||||||
@include blue-gradient;
|
background: $blue;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
&:focus, // Mouse, touch, stylus focus
|
&:focus, // Mouse, touch, stylus focus
|
||||||
&:focus-visible {
|
&:focus-visible {
|
||||||
|
|
@ -130,16 +132,18 @@ export default {
|
||||||
outline: none;
|
outline: none;
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 0 0 3px $white,
|
0 0 0 3px $white,
|
||||||
0 0 0 5.5px $red;
|
0 0 0 5.5px $blue;
|
||||||
color: $white;
|
color: $blue;
|
||||||
@include blue-gradient;
|
&:active {
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: $gray-550 !important;
|
color: $gray-550 !important;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
border: 1px solid $red;
|
border: 1px solid $blue;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
suppressPageScroll
|
suppressPageScroll
|
||||||
:onModalClosedCallback="onModalClosed"
|
:onModalClosedCallback="onModalClosed"
|
||||||
:footerButtonText="modalButtonText"
|
:footerButtonText="modalButtonText"
|
||||||
|
:isFooterButtonPrimary="true"
|
||||||
@footer-button-event="saveProgress">
|
@footer-button-event="saveProgress">
|
||||||
<p class="modal-body-inner" v-html="modalBodyText"></p>
|
<p class="modal-body-inner" v-html="modalBodyText"></p>
|
||||||
<saveProgressQuestion
|
<saveProgressQuestion
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
suppressPageScroll
|
suppressPageScroll
|
||||||
:onModalClosedCallback="onModalClosed"
|
:onModalClosedCallback="onModalClosed"
|
||||||
:footerButtonText="modalButtonText"
|
:footerButtonText="modalButtonText"
|
||||||
|
:isFooterButtonPrimary="true"
|
||||||
@footer-button-event="saveProgress">
|
@footer-button-event="saveProgress">
|
||||||
<p class="modal-body-inner">{{ modalBodyText }}</p>
|
<p class="modal-body-inner">{{ modalBodyText }}</p>
|
||||||
<saveProgressQuestion
|
<saveProgressQuestion
|
||||||
|
|
|
||||||
|
|
@ -757,7 +757,7 @@ function setupMocks({
|
||||||
wrapper.vm.$refs.navbar.removeLoader = jest.fn();
|
wrapper.vm.$refs.navbar.removeLoader = jest.fn();
|
||||||
const closestShops = {
|
const closestShops = {
|
||||||
data: {
|
data: {
|
||||||
providers: [
|
inShopProviders: [
|
||||||
{ id: 1, name: "Shop 1" },
|
{ id: 1, name: "Shop 1" },
|
||||||
{ id: 2, name: "Shop 2" },
|
{ id: 2, name: "Shop 2" },
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -308,7 +308,7 @@ export default {
|
||||||
this.serviceZipCode,
|
this.serviceZipCode,
|
||||||
this.carId
|
this.carId
|
||||||
);
|
);
|
||||||
this.displayNoServiceAlert = !closestShops?.data?.providers?.length;
|
this.displayNoServiceAlert = !closestShops?.data?.inShopProviders?.length;
|
||||||
if (this.displayNoServiceAlert) {
|
if (this.displayNoServiceAlert) {
|
||||||
return this.$refs.navbar.removeLoader();
|
return this.$refs.navbar.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -265,6 +265,9 @@ export default {
|
||||||
.vinlookupquestion p {
|
.vinlookupquestion p {
|
||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
}
|
}
|
||||||
|
.header-sub-copy {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
.funnel-sub-header {
|
.funnel-sub-header {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
h5.dark-header {
|
h5.dark-header {
|
||||||
|
|
|
||||||
|
|
@ -722,7 +722,7 @@ function setupMocks({
|
||||||
wrapper.vm.$refs.navbar.removeLoader = jest.fn();
|
wrapper.vm.$refs.navbar.removeLoader = jest.fn();
|
||||||
const closestShops = {
|
const closestShops = {
|
||||||
data: {
|
data: {
|
||||||
providers: [
|
inShopProviders: [
|
||||||
{ id: 1, name: "Shop 1" },
|
{ id: 1, name: "Shop 1" },
|
||||||
{ id: 2, name: "Shop 2" },
|
{ id: 2, name: "Shop 2" },
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -274,7 +274,7 @@ export default {
|
||||||
this.serviceZipCode,
|
this.serviceZipCode,
|
||||||
this.carId
|
this.carId
|
||||||
);
|
);
|
||||||
this.displayNoServiceAlert = !closestShops?.data?.providers?.length;
|
this.displayNoServiceAlert = !closestShops?.data?.inShopProviders?.length;
|
||||||
if (this.displayNoServiceAlert) {
|
if (this.displayNoServiceAlert) {
|
||||||
return this.$refs.navbar.removeLoader();
|
return this.$refs.navbar.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -904,7 +904,7 @@ export default {
|
||||||
|
|
||||||
:deep(.nav-bar) {
|
:deep(.nav-bar) {
|
||||||
position: initial;
|
position: initial;
|
||||||
button.btn {
|
button {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ export default {
|
||||||
"service-location"
|
"service-location"
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!closestShops || closestShops.providers?.length === 0) {
|
if (!closestShops || closestShops.inShopProviders?.length === 0) {
|
||||||
this.displayNoServiceAlert = true;
|
this.displayNoServiceAlert = true;
|
||||||
this.focusOnZipInput();
|
this.focusOnZipInput();
|
||||||
this.resetModalButtonStyle();
|
this.resetModalButtonStyle();
|
||||||
|
|
|
||||||
|
|
@ -265,7 +265,7 @@ export default {
|
||||||
this.serviceZipCode,
|
this.serviceZipCode,
|
||||||
this.carId
|
this.carId
|
||||||
);
|
);
|
||||||
this.displayNoServiceAlert = !closestShops?.data?.providers?.length;
|
this.displayNoServiceAlert = !closestShops?.data?.inShopProviders?.length;
|
||||||
if (this.displayNoServiceAlert) {
|
if (this.displayNoServiceAlert) {
|
||||||
return this.$refs.navbar.removeLoader();
|
return this.$refs.navbar.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ export default {
|
||||||
this.serviceZipCode,
|
this.serviceZipCode,
|
||||||
this.carId
|
this.carId
|
||||||
);
|
);
|
||||||
this.displayNoServiceAlert = !closestShops?.data?.providers?.length;
|
this.displayNoServiceAlert = !closestShops?.data?.inShopProviders?.length;
|
||||||
if (this.displayNoServiceAlert) {
|
if (this.displayNoServiceAlert) {
|
||||||
return this.$refs.navbar.removeLoader();
|
return this.$refs.navbar.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -123,8 +123,8 @@ $body-color: $gray-600;
|
||||||
|
|
||||||
//Fonts
|
//Fonts
|
||||||
$font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif;
|
$font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif;
|
||||||
$font-family-monospace: UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
|
$font-family-monospace:
|
||||||
monospace;
|
UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||||
// stylelint-enable value-keyword-case
|
// stylelint-enable value-keyword-case
|
||||||
$font-family-base: $font-family-sans-serif;
|
$font-family-base: $font-family-sans-serif;
|
||||||
$font-family-code: $font-family-monospace;
|
$font-family-code: $font-family-monospace;
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,6 @@ export default {
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.btn {
|
.btn {
|
||||||
&:first-child:active {
|
|
||||||
background-color: $red;
|
|
||||||
}
|
|
||||||
&.btn-primary {
|
&.btn-primary {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: $red;
|
background: $red;
|
||||||
|
|
@ -117,8 +114,8 @@ export default {
|
||||||
&.btn-secondary {
|
&.btn-secondary {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: 1px solid $red;
|
border: 1px solid $blue;
|
||||||
color: $red;
|
color: $blue;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
transition: all 150ms linear;
|
transition: all 150ms linear;
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
|
|
@ -131,8 +128,11 @@ export default {
|
||||||
outline: none;
|
outline: none;
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 0 0 3px $white,
|
0 0 0 3px $white,
|
||||||
0 0 0 5.5px $red;
|
0 0 0 5.5px $blue;
|
||||||
color: $white;
|
color: $blue;
|
||||||
|
&:hover {
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
&:disabled {
|
&:disabled {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue