cgalvan/amazon-location-features-demo-web
Amazon Location Features Demo Web
Requirements
- Run the template from
/extra/cloudformation/default-unauth-resources-template.yamlto create a cloudformation stack on AWS inus-east-1region using your own AWS account and getIdentityPoolId,PinPointAppId,WebSocketUrlfrom stack output's tab.IdentityPoolIdvalue will be added to.envfile againstVITE_AWS_COGNITO_IDENTITY_POOL_IDSandVITE_PINPOINT_IDENTITY_POOL_ID.PinPointAppIdvalue will be added to.envfile againstVITE_PINPOINT_APPLICATION_ID.WebSocketUrlvalue will be added to.envfile againstVITE_AWS_WEB_SOCKET_URLS.
- Run the template from
/extra/cloudformation/default-unauth-resources-template.yamlto create a cloudformation stack on AWS inap-southeast-1region using your own AWS account and getIdentityPoolId,WebSocketUrlfrom stack output's tab [Necessary if you want GrabMaps to be enabled].IdentityPoolIdvalue will be added to.envfile againstVITE_AWS_COGNITO_IDENTITY_POOL_IDS(comma separated for multiple values).WebSocketUrlvalue will be added to.envfile againstVITE_AWS_WEB_SOCKET_URLS(comma separated for multiple values).
- Value for
VITE_AWS_CF_TEMPLATE,VITE_APPLE_APP_STORE_LINK,VITE_GOOGLE_PLAY_STORE_LINKcan be added as it is to.envfile from.env.examples. - Value for
VITE_APP_VERSIONneeds to be populated with the correct version at the time of deployment in the following format2.1.0. - Values for
VITE_MIGRATE_FROM_GOOGLE_MAPS_PAGE,VITE_MIGRATE_A_WEB_APP_PAGE,VITE_MIGRATE_AN_ANDROID_APP_PAGE,VITE_MIGRATE_AN_IOS_APP_PAGE,VITE_MIGRATE_A_WEB_SERVICE_PAGEandVITE_PRICING_PAGcan either be1or0to either enable or disable the respective pages.
Env keys required in .env file, see .env.example for reference
VITE_AWS_COGNITO_IDENTITY_POOL_IDS
VITE_AWS_WEB_SOCKET_URLS
VITE_PINPOINT_IDENTITY_POOL_ID
VITE_PINPOINT_APPLICATION_ID
VITE_AWS_CF_TEMPLATE
VITE_APPLE_APP_STORE_LINK
VITE_GOOGLE_PLAY_STORE_LINK
VITE_APP_VERSION
VITE_MIGRATE_FROM_GOOGLE_MAPS_PAGE
VITE_MIGRATE_A_WEB_APP_PAGE
VITE_MIGRATE_AN_ANDROID_APP_PAGE
VITE_MIGRATE_AN_IOS_APP_PAGE
VITE_MIGRATE_A_WEB_SERVICE_PAGE
VITE_PRICING_PAGE
Env keys optional in .env file, see .env.example for reference
VITE_NL_BASE_URL
VITE_NL_API_KEY
Configure
git clone <REPO_URL>
cd amazon-location-features-demo-web/
npm install
npm run dev
npm install
Installs all the dependencies.
npm run dev
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
E2E Tests
Env keys required in cypress.env.json file, see cypress.env.json.example for reference.
WEB_DOMAIN
WEB_DOMAIN_USERNAME
WEB_DOMAIN_PASSWORD
IDENTITY_POOL_ID
USER_DOMAIN
USER_POOL_CLIENT_ID
USER_POOL_ID
WEB_SOCKET_URL
COGNITO_EMAIL
COGNITO_PASSWORD
PINPOINT_IDENTITY_POOL_ID
PINPOINT_APPLICATION_ID
If you are configuring Github actions for the E2E tests, make sure to add the below env keys to the secrets section of the repo.
- The
/extra/cloudformation/main-cf-template.yamlneeds to be deployed on one of the production accounts in theus-east-1region. - Download this
/extra/cloudformation/main-cf-template.yamlon local machine. - Login to AWS console.
- Go to CloudFormation service.
- Click on Create Stack → Upload a Template file → Select the template file downloaded above.
- Click Next → Enter your email → Next → Create the stack.
- Once, the stack is created → Go to outputs of the stack & Copy them all.
- Now, Browse to Github amazon-location-features-demo-web repo.
- Under the repo settings → Go to Secrets & Variables → Click on Actions.
- Now, Add/Update the values in secrets as per the output values gathered from the cloudformation.
- Add all keys from
.envfile to the secrets section of the repo as well from the above Requirements section. - Also create a Personal Access Token (PAT) from here, which will be added against
GH_PATand the username againstGH_USERNAMEin the secrets section of the repo.
> WEB_DOMAIN: "http://localhost:3000"
> WEB_DOMAIN_USERNAME: "XXXXX" // This is the username for the web domain (only required for dev and qa environments, not needed for prod environment)
> WEB_DOMAIN_PASSWORD: "XXXXX" // This is the password for the web domain (only required for dev and qa environments, not needed for prod environment)
> IDENTITY_POOL_ID: "XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab" // Stack output as IdentityPoolId
> USER_DOMAIN: "https://XXXXXXXXXXXX.XXXX.XX-XXXX-X.amazoncognito.com/" // Stack output as UserDomain
> USER_POOL_CLIENT_ID: "XXXXXXXXXXXX" // Stack output as UserPoolClientId
> USER_POOL_ID: "XX-XXXX-X_XXXXXXXXXX" // Stack output as UserPoolId
> WEB_SOCKET_URL: "XXXXXXXXXXX-ats.iot.us-east-1.amazonaws.com" // Stack output as WebSocketUrl
> COGNITO_EMAIL: "abc@xyz.com" // Stack output as UserEmail
> COGNITO_PASSWORD: "XXXXXX" // This is the password for the cognito user (received on registered email)
> VITE_AWS_COGNITO_IDENTITY_POOL_IDS
> VITE_AWS_WEB_SOCKET_URLS
> VITE_PINPOINT_IDENTITY_POOL_ID
> VITE_PINPOINT_APPLICATION_ID
> VITE_AWS_CF_TEMPLATE
> VITE_APPLE_APP_STORE_LINK
> VITE_GOOGLE_PLAY_STORE_LINK
> VITE_DATA_FILES_URL
> VITE_SAMPLES_LIST_FILENAME
> VITE_APP_VERSION
> VITE_MIGRATE_FROM_GOOGLE_MAPS_PAGE
> VITE_MIGRATE_A_WEB_APP_PAGE
> VITE_MIGRATE_AN_ANDROID_APP_PAGE
> VITE_MIGRATE_AN_IOS_APP_PAGE
> VITE_MIGRATE_A_WEB_SERVICE_PAGE
> VITE_PRICING_PAGE
> VITE_CUSTOM_ASSETS_URL
> GH_USERNAME: XXXXXXXX
> GH_PAT: ghp_XXXXXXXXXXXXXXXXXXXXXX
npm run cypress
Runs Cypress tests to completion in a headed chrome browser.
Security Tests
Env keys required in security-tests/.env file, see security-tests/.env.example for reference.
IDENTITY_POOL_ID
USER_POOL_ID
USER_POOL_CLIENT_ID
COGNITO_EMAIL
COGNITO_PASSWORD
IAM_AUTH_ROLE_NAME
IAM_UNAUTH_ROLE_NAME
If you are configuring Github actions for the Security tests, make sure to add the below env keys to the secrets section of the repo. You will need to use the values from the stack that was created when setting up the E2E tests.
> IDENTITY_POOL_ID: "XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab" // Stack output as IdentityPoolId
> USER_POOL_ID: "XX-XXXX-X_XXXXXXXXXX" // Stack output as UserPoolId
> USER_POOL_CLIENT_ID: "XXXXXXXXXXXX" // Stack output as UserPoolClientId
> COGNITO_EMAIL: "abc@xyz.com" // Stack output as UserEmail
> COGNITO_PASSWORD: "XXXXXX" // This is the password for the cognito user (received on registered email)
> IAM_AUTH_ROLE_NAME: "amazon-location-resources-AmazonLocationDemoCognit-XXXXXXXX" // Stack output as IAMAuthRoleName
> IAM_UNAUTH_ROLE_NAME: "amazon-location-resources-AmazonLocationDemoCognit-XXXXXXXX" // Stack output as IAMUnAuthRoleName
npm run security-tests
Runs Security tests insuring policies match the expected values.
Unit Tests
Env keys required in .env.
VITE_PINPOINT_IDENTITY_POOL_ID
VITE_PINPOINT_APPLICATION_ID
If you are configuring Github actions for the Unit tests, make sure to add the below env keys to the secrets section of the repo. You will need to use the values from the stack that was created when setting up the app env in the very first step (These should already exist if you have setup secrets for E2E tests).
> VITE_PINPOINT_IDENTITY_POOL_ID: "XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab" // Same as VITE_PINPOINT_IDENTITY_POOL_ID
> VITE_PINPOINT_APPLICATION_ID: "XXXXXXXX" // Same as VITE_PINPOINT_APPLICATION_ID
npm run test
Run all the test cases for all the components within the repo.
npm run coverage
Run all the test cases for all the components within the repo and provides a coverage report.
Security
See CONTRIBUTING for more information.
Getting Help
The best way to interact with our team is through GitHub.
You can open an issue and choose from one of our templates for
bug reports,
feature requests
or guidance.
If you have a support plan with AWS Support, you can also create a new support case.
Contributing
We welcome community contributions and pull requests. See CONTRIBUTING.md for information on how to set up a development environment and submit code.
License
This library is licensed under the MIT-0 License. See the LICENSE file.