From f214b57e471fde3e822449538fd8ecf3ef8546a0 Mon Sep 17 00:00:00 2001 From: malincrist <92857141+malincrist@users.noreply.github.com> Date: Tue, 22 Feb 2022 12:44:58 +0100 Subject: [PATCH 001/245] Create pipeline that will automatically check for Accessibility Issues (#1584) * Create mainCI.yml Work in progress, don't merge * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * added script for build website * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Fixed color contrast accessibility issues * Fixed ari-roles issues * added static storage wip * Added missing static data * Update mainCI.yml * added static data for requests made at publishing time * updated PublisherStaticDataProvider * updated PublisherStaticDataProvider * updated PublisherStaticDataProvider * get data from default.json too * added build-static-data script * refactoring * removed logs * removed some headers from static data * removed headers * added smaller GraphQL api * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * Update mainCI.yml * test accessibility on profile * Update mainCI.yml * Update mainCI.yml * removed headers * test with pre-populated e-mail and password * compacted json files * removed test e-mail and password * code review changes * test for signed in version * added default.json and defaultMockData.json only for staticData * fixed webpack configs * fixed accessibility issues * fixed accessibility issues * added staticDataEnviroment constant * Update mainCI.yml * removed logs * renamed defaultMockData.json --- .github/workflows/mainCI.yml | 36 ++++++++ environmentConstants.js | 6 ++ package.json | 3 +- src/apim.publish.module.ts | 12 ++- src/apim.runtime.module.ts | 8 ++ .../ko/runtime/api-list-dropdown.html | 82 ++++++++--------- .../runtime/oauth-server-configuration.html | 33 ++++--- .../ko/runtime/product-list-dropdown.html | 2 +- .../users/profile/ko/runtime/profile.html | 10 +- src/services/IStaticDataProvider.ts | 3 + src/services/publisherStaticDataProvider.ts | 23 +++++ src/services/runtimeStaticDataProvider.ts | 23 +++++ src/services/staticDataHttpClient.ts | 91 +++++++++++++++++++ src/startup.publish.ts | 19 +++- src/startup.runtime.ts | 8 +- templates/default.json | 2 +- tests/mocks/defaultStaticData.json | 1 + webpack.staticData.js | 34 +++++++ 18 files changed, 326 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/mainCI.yml create mode 100644 environmentConstants.js create mode 100644 src/services/IStaticDataProvider.ts create mode 100644 src/services/publisherStaticDataProvider.ts create mode 100644 src/services/runtimeStaticDataProvider.ts create mode 100644 src/services/staticDataHttpClient.ts create mode 100644 tests/mocks/defaultStaticData.json create mode 100644 webpack.staticData.js diff --git a/.github/workflows/mainCI.yml b/.github/workflows/mainCI.yml new file mode 100644 index 000000000..e02d57085 --- /dev/null +++ b/.github/workflows/mainCI.yml @@ -0,0 +1,36 @@ +name: CI + +on: + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Use Node.js 16.x + uses: actions/checkout@v2 + with: + node-version: 16.x + + - name: Install + run: npm install + + - name: Build + run: npm run build-static-data + + - name: Scan for accessibility issues + uses: microsoft/accessibility-insights-action@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + site-dir: ${{ github.workspace }}/dist/website + localhost-port: 12345 + input-urls: http://localhost:12345/profile http://localhost:12345/500 http://localhost:12345/404 + + - name: Upload report artifact + uses: actions/upload-artifact@v2 + with: + name: accessibility-reports + path: ${{ github.workspace }}/_accessibility-reports diff --git a/environmentConstants.js b/environmentConstants.js new file mode 100644 index 000000000..1ce0e81c7 --- /dev/null +++ b/environmentConstants.js @@ -0,0 +1,6 @@ + +const staticDataEnvironment = "staticData"; + +module.exports = { + staticDataEnvironment +} \ No newline at end of file diff --git a/package.json b/package.json index 948a53e51..43239268f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "test": "node node_modules/mocha/bin/_mocha -r mocha.js src/**/*.spec.ts tests/e2e/**/*.spec.ts --timeout 30000", "deploy-function": "npm run build-function && cd dist/function && func azure functionapp publish < function app name >", "publish": "webpack --config webpack.publisher.js && node dist/publisher/index.js && npm run serve-website", - "serve-website": "webpack serve --open --static ./dist/website --no-stats" + "serve-website": "webpack serve --open --static ./dist/website --no-stats", + "build-static-data": "webpack --config webpack.staticData.js && node dist/publisher/index.js" }, "devDependencies": { "@azure/storage-blob": "12.8.0", diff --git a/src/apim.publish.module.ts b/src/apim.publish.module.ts index d1ed2bc6b..905d69e36 100644 --- a/src/apim.publish.module.ts +++ b/src/apim.publish.module.ts @@ -37,6 +37,9 @@ import { ApiProductsModule } from "./components/apis/api-products/ko/apiProducts import { RuntimeConfigPublisher } from "./publishing/runtimeConfigPublisher"; import { RuntimeConfigBuilder } from "./publishing/runtimeConfigBuilder"; import { CustomHtmlPublishModule } from "./components/custom-html/customHtml.publish.module"; +import { StaticDataHttpClient } from "./services/staticDataHttpClient"; +import { PublisherStaticDataProvider } from "./services/publisherStaticDataProvider"; +import {staticDataEnvironment} from "./../environmentConstants" export class ApimPublishModule implements IInjectorModule { public register(injector: IInjector): void { @@ -63,7 +66,7 @@ export class ApimPublishModule implements IInjectorModule { injector.bindModule(new ReportsModule()); injector.bindModule(new ValidationSummaryModule()); injector.bindModule(new CustomHtmlPublishModule()); - injector.bindSingleton("tenantService", TenantService); + injector.bindSingleton("tenantService", TenantService); injector.bindSingleton("backendService", BackendService); injector.bindSingleton("userService", StaticUserService); injector.bindSingleton("roleService", StaticRoleService); @@ -80,6 +83,11 @@ export class ApimPublishModule implements IInjectorModule { injector.bindSingleton("runtimeConfigBuilder", RuntimeConfigBuilder); injector.bindToCollection("publishers", AadConfigPublisher); injector.bindToCollection("publishers", RuntimeConfigPublisher); - + + if (process.env.NODE_ENV === staticDataEnvironment) { + injector.bind("httpClient", StaticDataHttpClient); + injector.bind("dataProvider", PublisherStaticDataProvider); + } + } } \ No newline at end of file diff --git a/src/apim.runtime.module.ts b/src/apim.runtime.module.ts index 3e9714c80..6a2073374 100644 --- a/src/apim.runtime.module.ts +++ b/src/apim.runtime.module.ts @@ -77,7 +77,10 @@ import { UsersService } from "./services/usersService"; import { ApimSettingsProvider } from "./configuration/apimSettingsProvider"; import { AccessTokenRefrsher } from "./authentication/accessTokenRefresher"; import { Pagination } from "./components/pagination/pagination"; +import { StaticDataHttpClient } from "./services/staticDataHttpClient"; import { OauthServerConfiguration } from "./components/operations/operation-details/ko/runtime/oauth-server-configuration"; +import { RuntimeStaticDataProvider } from "./services/runtimeStaticDataProvider"; +import {staticDataEnvironment} from "./../environmentConstants" export class ApimRuntimeModule implements IInjectorModule { @@ -149,5 +152,10 @@ export class ApimRuntimeModule implements IInjectorModule { injector.bindToCollection("autostart", AccessTokenRefrsher); injector.bind("pagination", Pagination); injector.bind("oauthServerConfiguration", OauthServerConfiguration); + + if (process.env.NODE_ENV === staticDataEnvironment) { + injector.bind("httpClient", StaticDataHttpClient); + injector.bind("dataProvider", RuntimeStaticDataProvider); + } } } \ No newline at end of file diff --git a/src/components/apis/list-of-apis/ko/runtime/api-list-dropdown.html b/src/components/apis/list-of-apis/ko/runtime/api-list-dropdown.html index 8f0c1e048..c40a20ca0 100644 --- a/src/components/apis/list-of-apis/ko/runtime/api-list-dropdown.html +++ b/src/components/apis/list-of-apis/ko/runtime/api-list-dropdown.html @@ -1,5 +1,5 @@
-
+
@@ -14,7 +14,7 @@
-
\ No newline at end of file diff --git a/src/components/operations/operation-details/ko/runtime/oauth-server-configuration.html b/src/components/operations/operation-details/ko/runtime/oauth-server-configuration.html index f72b8bad9..d60d8eeb3 100644 --- a/src/components/operations/operation-details/ko/runtime/oauth-server-configuration.html +++ b/src/components/operations/operation-details/ko/runtime/oauth-server-configuration.html @@ -9,10 +9,10 @@
- -
@@ -31,9 +31,10 @@
- -
@@ -57,7 +58,8 @@ data-bind="textInput: $component.authorizationServer().authorizationEndpoint">
@@ -76,11 +78,12 @@
-
@@ -99,10 +102,10 @@
- -
diff --git a/src/components/products/product-list/ko/runtime/product-list-dropdown.html b/src/components/products/product-list/ko/runtime/product-list-dropdown.html index 60a752fac..1c4cc4258 100644 --- a/src/components/products/product-list/ko/runtime/product-list-dropdown.html +++ b/src/components/products/product-list/ko/runtime/product-list-dropdown.html @@ -3,7 +3,7 @@
-