Skip to content

Commit 2fb201e

Browse files
committed
Merge branch 'master' into feature/local-styles
2 parents 4898468 + 73bb8aa commit 2fb201e

File tree

211 files changed

+4614
-4006
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

211 files changed

+4614
-4006
lines changed

.github/workflows/test.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
run: npm run test
2121

2222
end2end-tests:
23-
runs-on: ubuntu-latest
23+
runs-on: windows-latest
2424

2525
steps:
2626
- name: Checkout code
@@ -32,16 +32,29 @@ jobs:
3232
- name: Install
3333
run: npm install
3434

35+
- name: Compile
36+
run: npx tsc -p tests\tsconfig.json
37+
38+
- name: Install Playwright Browsers
39+
run: npx playwright install --with-deps
40+
3541
- name: Build static data
3642
run: npm run build-mock-static-data
3743

3844
- name: Start mock server
3945
run: npm run serve-website &
46+
shell: bash
4047

4148
- name: Wait for the server
4249
run: ./.github/scripts/wait-for-server.ps1 -HostName "http://localhost:8080"
4350
shell: pwsh
4451

4552
- name: Run tests
46-
run: npm run test-e2e
47-
53+
run: npx playwright test tests/ --workers 1
54+
55+
- uses: actions/upload-artifact@v3
56+
if: failure()
57+
with:
58+
name: playwright-report
59+
path: test-results/
60+
retention-days: 30

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ node_modules/
77
src/config.design.json
88
src/config.publish.json
99
src/config.runtime.json
10-
10+
test-results/
11+
tsconfig.tsbuildinfo

js/HipObject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// and callback functions for displaying items outside the control.
33

44
//-------------------------------------------------------------------------------------------------
5-
// The following varible name is defined by partner
5+
// The following variable name is defined by partner
66
// Make sure it has no conflicts to any other your variable names.
77
// The name defined here influence how to generate get hip URL that has format "http://p.client.hip.live.com/GetHIP/GetWLSPHIP0/<the namedefined here>?".
88
// Replace '< >' there with the name here.

package-lock.json

Lines changed: 899 additions & 1014 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 73 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
"build-publisher": "webpack --config webpack.publisher.js",
1818
"build-runtime": "webpack --config webpack.runtime.js",
1919
"build-function": "webpack --config webpack.function.js",
20-
"test-e2e": "node node_modules/mocha/bin/_mocha -r mocha.js tests/e2e/**/*.spec.ts --timeout 3000000",
2120
"test": "node node_modules/mocha/bin/_mocha -r mocha.js src/**/*.spec.ts",
2221
"deploy-function": "npm run build-function && cd dist/function && func azure functionapp publish < function app name >",
2322
"publish": "webpack --config webpack.publisher.js && node dist/publisher/index.js && npm run serve-website",
@@ -29,93 +28,92 @@
2928
"lint:fix": "eslint src/**/*.ts --fix"
3029
},
3130
"devDependencies": {
32-
"@azure/storage-blob": "12.13.0",
33-
"@types/chai": "^4.3.4",
31+
"@azure/storage-blob": "12.16.0",
32+
"@types/chai": "^4.3.6",
3433
"@types/google-maps": "^3.2.3",
35-
"@types/knockout": "^3.4.72",
36-
"@types/knockout.mapping": "^2.0.37",
37-
"@types/knockout.validation": "0.0.38",
34+
"@types/knockout": "^3.4.73",
35+
"@types/knockout.mapping": "^2.0.38",
36+
"@types/knockout.validation": "0.0.40",
3837
"@types/mime": "^3.0.1",
3938
"@types/mocha": "10.0.1",
40-
"@types/node": "^18.15.3",
41-
"@types/puppeteer": "5.4.7",
42-
"@typescript-eslint/eslint-plugin": "^5.55.0",
43-
"@typescript-eslint/parser": "^5.55.0",
44-
"autoprefixer": "^10.4.14",
39+
"@types/node": "^20.6.2",
40+
"@typescript-eslint/eslint-plugin": "^5.60.0",
41+
"@typescript-eslint/parser": "^5.60.0",
42+
"autoprefixer": "^10.4.15",
4543
"buffer": "^6.0.3",
46-
"chai": "^4.3.7",
44+
"chai": "^4.3.8",
4745
"clean-webpack-plugin": "4.0.0",
4846
"copy-webpack-plugin": "^11.0.0",
49-
"css-loader": "^6.7.3",
50-
"eslint": "^8.36.0",
47+
"css-loader": "^6.8.1",
48+
"eslint": "^8.43.0",
5149
"file-loader": "^6.2.0",
5250
"html-loader": "^4.2.0",
53-
"mini-css-extract-plugin": "^2.7.3",
51+
"mini-css-extract-plugin": "^2.7.6",
5452
"mocha": "^10.2.0",
5553
"path": "^0.12.7",
56-
"postcss-loader": "^7.0.2",
57-
"puppeteer": "19.7.5",
54+
"postcss-loader": "^7.3.3",
5855
"querystring-es3": "^0.2.1",
5956
"raw-loader": "^4.0.2",
60-
"sass": "^1.59.3",
61-
"sass-loader": "^13.2.0",
57+
"sass": "^1.67.0",
58+
"sass-loader": "^13.3.2",
6259
"stream-browserify": "^3.0.0",
63-
"style-loader": "^3.3.2",
64-
"terser-webpack-plugin": "^5.3.7",
65-
"ts-loader": "^9.4.2",
60+
"style-loader": "^3.3.3",
61+
"terser-webpack-plugin": "^5.3.9",
62+
"ts-loader": "^9.4.4",
6663
"ts-node": "10.9.1",
6764
"typescript": "^4.9.5",
68-
"url-loader": "^4.1.1",
69-
"webpack": "5.76.1",
70-
"webpack-cli": "5.0.1",
71-
"webpack-dev-server": "4.12.0",
72-
"webpack-merge": "5.8.0"
65+
"webpack": "5.88.2",
66+
"webpack-cli": "5.1.4",
67+
"webpack-dev-server": "4.15.1",
68+
"webpack-merge": "5.9.0",
69+
"playwright": "1.38.0",
70+
"@playwright/test": "1.35.1"
7371
},
74-
"dependencies": {
75-
"@azure/api-management-custom-widgets-scaffolder": "^1.0.0-beta.2",
76-
"@azure/api-management-custom-widgets-tools": "^1.0.0-beta.1",
77-
"@azure/msal-browser": "^2.34.0",
78-
"@braintree/sanitize-url": "6.0.2",
79-
"@microsoft/applicationinsights-web": "^2.8.11",
80-
"@monaco-editor/loader": "^1.3.2",
81-
"@paperbits/azure": "0.1.587",
82-
"@paperbits/common": "0.1.587",
83-
"@paperbits/core": "0.1.587",
84-
"@paperbits/forms": "0.1.587",
85-
"@paperbits/styles": "0.1.587",
86-
"@webcomponents/custom-elements": "1.5.1",
87-
"@webcomponents/shadydom": "^1.10.0",
88-
"client-oauth2": "4.3.3",
89-
"codemirror": "^5.65.5",
90-
"core-js": "^3.29.1",
91-
"d3": "7.8.2",
92-
"file-saver": "^2.0.5",
93-
"google-maps": "^4.3.3",
94-
"graphql": "^15.5.0",
95-
"graphql-config": "^4.0.1",
96-
"graphql-language-service": "3.1.6",
97-
"idb-keyval": "^6.2.0",
98-
"js-beautify": "^1.14.7",
99-
"knockout": "^3.5.1",
100-
"knockout-mapping": "^2.6.0",
101-
"knockout.validation": "^2.0.4",
102-
"liquidjs": "^10.6.1",
103-
"lunr": "^2.3.9",
104-
"mime": "^3.0.0",
105-
"moment": "^2.29.4",
106-
"monaco-editor": "^0.29.1",
107-
"msal": "^1.4.17",
108-
"prettier": "^2.8.4",
109-
"prismjs": "^1.29.0",
110-
"rehype-raw": "^6.1.1",
111-
"rehype-sanitize": "^5.0.1",
112-
"rehype-stringify": "^9.0.3",
113-
"remark": "^14.0.2",
114-
"remark-gfm": "^3.0.1",
115-
"remark-parse": "^10.0.1",
116-
"remark-rehype": "^10.1.0",
117-
"saxen": "^8.1.2",
118-
"topojson-client": "^3.1.0",
119-
"html-truncate": "1.2.2"
120-
}
121-
}
72+
"dependencies": {
73+
"@azure/api-management-custom-widgets-scaffolder": "^1.0.0-beta.2",
74+
"@azure/api-management-custom-widgets-tools": "^1.0.0-beta.1",
75+
"@azure/msal-browser": "^2.37.1",
76+
"@braintree/sanitize-url": "6.0.4",
77+
"@microsoft/applicationinsights-web": "^3.0.2",
78+
"@monaco-editor/loader": "^1.3.3",
79+
"@paperbits/azure": "0.1.592",
80+
"@paperbits/common": "0.1.592",
81+
"@paperbits/core": "0.1.592",
82+
"@paperbits/forms": "0.1.592",
83+
"@paperbits/styles": "0.1.592",
84+
"@webcomponents/custom-elements": "1.6.0",
85+
"@webcomponents/shadydom": "^1.11.0",
86+
"client-oauth2": "4.3.3",
87+
"codemirror": "^6.0.1",
88+
"core-js": "^3.32.2",
89+
"d3": "7.8.5",
90+
"file-saver": "^2.0.5",
91+
"google-maps": "^4.3.3",
92+
"graphql": "^15.5.0",
93+
"graphql-config": "^4.0.1",
94+
"graphql-language-service": "3.1.6",
95+
"idb-keyval": "^6.2.1",
96+
"js-beautify": "^1.14.9",
97+
"knockout": "^3.5.1",
98+
"knockout-mapping": "^2.6.0",
99+
"knockout.validation": "^2.0.4",
100+
"liquidjs": "^10.9.2",
101+
"lunr": "^2.3.9",
102+
"mime": "^3.0.0",
103+
"moment": "^2.29.4",
104+
"monaco-editor": "^0.29.1",
105+
"msal": "^1.4.18",
106+
"prettier": "^2.8.8",
107+
"prismjs": "^1.29.0",
108+
"rehype-raw": "^6.1.1",
109+
"rehype-sanitize": "^5.0.1",
110+
"rehype-stringify": "^9.0.3",
111+
"remark": "^14.0.3",
112+
"remark-gfm": "^3.0.1",
113+
"remark-parse": "^10.0.2",
114+
"remark-rehype": "^10.1.0",
115+
"saxen": "^8.1.2",
116+
"topojson-client": "^3.1.0",
117+
"html-truncate": "1.2.2"
118+
}
119+
}

playwright.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { defineConfig } from '@playwright/test';
2+
3+
export default defineConfig({
4+
retries: 2,
5+
use: {
6+
video: 'retain-on-failure'
7+
}
8+
});

src/apim.design.module.ts

Lines changed: 28 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -9,53 +9,33 @@ import { ConsoleLogger } from "@paperbits/common/logging";
99
import { DefaultSessionManager } from "@paperbits/common/persistence/defaultSessionManager";
1010
import { HistoryRouteHandler } from "@paperbits/common/routing";
1111
import { RoleBasedSecurityDesignModule } from "@paperbits/core/security/roleBasedSecurity.design.module";
12-
import { ListOfApisModule } from "./components/apis/list-of-apis/ko/listOfApis.module";
13-
import { ListOfApisEditorModule } from "./components/apis/list-of-apis/ko/listOfApisEditor.module";
14-
import { DetailsOfApiModule } from "./components/apis/details-of-api/ko/detailsOfApi.module";
15-
import { DetailsOfApiEditorModule } from "./components/apis/details-of-api/ko/detailsOfApiEditor.module";
16-
import { HistoryOfApiModule } from "./components/apis/history-of-api/ko/historyOfApi.module";
17-
import { HistoryOfApiEditorModule } from "./components/apis/history-of-api/ko/historyOfApiEditor.module";
18-
import { SigninModule } from "./components/users/signin/signin.module";
12+
import { ListOfApisDesignModule } from "./components/apis/list-of-apis/ko/listOfApisEditor.module";
13+
import { DetailsOfApiDesignModule } from "./components/apis/details-of-api/ko/detailsOfApiEditor.module";
14+
import { HistoryOfApiEditorModule as HistoryOfApiDesignModule } from "./components/apis/history-of-api/ko/historyOfApiEditor.module";
1915
import { SigninDesignModule } from "./components/users/signin/signin.design.module";
20-
import { SigninSocialModule } from "./components/users/signin-social/signinSocial.module";
21-
import { SignupSocialModule } from "./components/users/signup-social/signupSocial.module";
22-
import { SigninSocialEditorModule } from "./components/users/signin-social/signinSocial.design.module";
16+
import { SigninSocialEditorModule as SigninSocialDesignModule } from "./components/users/signin-social/signinSocial.design.module";
2317
import { SignupSocialDesignModule } from "./components/users/signup-social/signupSocial.design.module";
24-
import { SignupModule } from "./components/users/signup/signup.module";
2518
import { SignupDesignModule } from "./components/users/signup/signup.design.module";
26-
import { ProfileModule } from "./components/users/profile/profile.module";
2719
import { ProfileDesignModule } from "./components/users/profile/profile.design.module";
28-
import { SubscriptionsModule } from "./components/users/subscriptions/subscriptions.module";
2920
import { SubscriptionsDesignModule } from "./components/users/subscriptions/subscriptions.design.module";
30-
import { ProductDetailsModule } from "./components/products/product-details/productDetails.module";
3121
import { ProductDetailsDesignModule } from "./components/products/product-details/productDetails.design.module";
3222
import { MapiClient, IdentityService } from "./services";
3323
import { SetupModule } from "./components/setup/setup.module";
3424
import { ContentModule } from "./components/content";
3525
import { CustomWidgetListModule } from "./components/custom-widget-list";
36-
import { OperationListModule } from "./components/operations/operation-list/ko/operationList.module";
37-
import { OperationListEditorModule } from "./components/operations/operation-list/ko/operationListEditor.module";
38-
import { OperationDetailsDesignModule } from "./components/operations/operation-details/operationDetails.design.module";
39-
import { ProductListModule } from "./components/products/product-list/ko/productList.module";
40-
import { ProductListEditorModule } from "./components/products/product-list/ko/productListEditor.module";
41-
import { ProductSubscribeModule } from "./components/products/product-subscribe/ko/productSubscribe.module";
42-
import { ProductSubscribeEditorModule } from "./components/products/product-subscribe/ko/productSubscribeEditor.module";
43-
import { ProductApisModule } from "./components/products/product-apis/ko/productApis.module";
44-
import { ProductApisEditorModule } from "./components/products/product-apis/ko/productApisEditor.module";
45-
import { ProductSubscriptionsEditorModule } from "./components/products/product-subscriptions/ko/productSubscriptionsEditor.module";
46-
import { ProductSubscriptionsModule } from "./components/products/product-subscriptions/ko/productSubscriptions.module";
26+
import { OperationListEditorModule as OperationListDesignModule } from "./components/operations/operation-list/ko/operationListEditor.module";
27+
import { OperationDetailsDesignModule } from "./components/operations/operation-details/ko/operationDetailsEditor.module";
28+
import { ProductListEditorModule as ProductListDesignModule } from "./components/products/product-list/ko/productListEditor.module";
29+
import { ProductSubscribeEditorModule as ProductSubscribeDesignModule } from "./components/products/product-subscribe/ko/productSubscribeEditor.module";
30+
import { ProductApisEditorModule as ProductApisDesignModule } from "./components/products/product-apis/ko/productApisEditor.module";
31+
import { ProductSubscriptionsEditorModule as ProductSubscriptionsDesignModule } from "./components/products/product-subscriptions/ko/productSubscriptionsEditor.module";
4732
import { App } from "./components/app/app";
48-
import { ReportsModule } from "./components/reports/ko/reports.module";
49-
import { ReportsEditorModule } from "./components/reports/ko/reportsEditor.module";
50-
import { ResetPasswordModule } from "./components/users/reset-password/resetPassword.module";
33+
import { ReportsEditorModule as ReportsDesignModule } from "./components/reports/ko/reportsEditor.module";
5134
import { ResetPasswordDesignModule } from "./components/users/reset-password/resetPassword.design.module";
52-
import { ConfirmPasswordModule } from "./components/users/confirm-password/ko/confirmPassword.module";
53-
import { ConfirmPasswordEditorModule } from "./components/users/confirm-password/ko/confirmPasswordEditor.module";
35+
import { ConfirmPasswordEditorModule as ConfirmPasswordDesignModule } from "./components/users/confirm-password/ko/confirmPasswordEditor.module";
5436
import { HelpModule } from "./components/help";
55-
import { ChangePasswordModule } from "./components/users/change-password/ko/changePassword.module";
56-
import { ChangePasswordEditorModule } from "./components/users/change-password/ko/changePasswordEditor.module";
37+
import { ChangePasswordEditorModule as ChangePasswordDesignModule } from "./components/users/change-password/ko/changePasswordEditor.module";
5738
import { TenantService } from "./services/tenantService";
58-
import { ValidationSummaryModule } from "./components/users/validation-summary/validationSummary.module";
5939
import { ValidationSummaryDesignModule } from "./components/users/validation-summary/validationSummary.design.module";
6040
import { BackendService } from "./services/backendService";
6141
import { StaticRoleService } from "./services/roleService";
@@ -64,59 +44,38 @@ import { PolicyService } from "./services/policyService";
6444
import { OAuthService } from "./services/oauthService";
6545
import { OldContentRouteGuard } from "./routing/oldContentRouteGuard";
6646
import { AccessTokenRefrsher } from "./authentication/accessTokenRefresher";
67-
import { ApiProductsModule } from "./components/apis/api-products/ko/apiProducts.module";
68-
import { ApiProductsEditorModule } from "./components/apis/api-products/ko/apiProductsEditor.module";
47+
import { ApiProductsDesignModule } from "./components/apis/api-products/ko/apiProductsEditor.module";
6948
import { RuntimeConfigurator } from "./services/runtimeConfigurator";
7049
import { CustomHtmlDesignModule } from "./components/custom-html/customHtml.design.module";
7150
import { CustomWidgetDesignModule } from "./components/custom-widget/customWidget.design.module";
7251
import { CodeEditor } from "./components/code-editor/code-editor";
7352

53+
7454
export class ApimDesignModule implements IInjectorModule {
7555
public register(injector: IInjector): void {
7656
injector.bindModule(new SetupModule());
77-
injector.bindModule(new ListOfApisModule());
78-
injector.bindModule(new ListOfApisEditorModule());
79-
injector.bindModule(new ApiProductsModule());
80-
injector.bindModule(new ApiProductsEditorModule());
81-
injector.bindModule(new DetailsOfApiModule());
82-
injector.bindModule(new DetailsOfApiEditorModule());
83-
injector.bindModule(new HistoryOfApiModule());
84-
injector.bindModule(new HistoryOfApiEditorModule());
85-
injector.bindModule(new SigninModule());
57+
injector.bindModule(new ListOfApisDesignModule());
58+
injector.bindModule(new ApiProductsDesignModule());
59+
injector.bindModule(new DetailsOfApiDesignModule());
60+
injector.bindModule(new HistoryOfApiDesignModule());
8661
injector.bindModule(new SigninDesignModule());
87-
injector.bindModule(new SigninSocialModule());
88-
injector.bindModule(new SignupSocialModule());
89-
injector.bindModule(new SigninSocialEditorModule());
62+
injector.bindModule(new SigninSocialDesignModule());
9063
injector.bindModule(new SignupSocialDesignModule());
91-
injector.bindModule(new SignupModule());
9264
injector.bindModule(new SignupDesignModule());
93-
injector.bindModule(new ProfileModule());
9465
injector.bindModule(new ProfileDesignModule());
95-
injector.bindModule(new SubscriptionsModule());
9666
injector.bindModule(new SubscriptionsDesignModule());
97-
injector.bindModule(new ProductListModule());
98-
injector.bindModule(new ProductListEditorModule());
99-
injector.bindModule(new ProductApisModule());
100-
injector.bindModule(new ProductApisEditorModule());
101-
injector.bindModule(new ProductSubscriptionsModule());
102-
injector.bindModule(new ProductSubscriptionsEditorModule());
103-
injector.bindModule(new ProductDetailsModule());
67+
injector.bindModule(new ProductListDesignModule());
68+
injector.bindModule(new ProductApisDesignModule());
69+
injector.bindModule(new ProductSubscriptionsDesignModule());
10470
injector.bindModule(new ProductDetailsDesignModule());
105-
injector.bindModule(new ProductSubscribeModule());
106-
injector.bindModule(new ProductSubscribeEditorModule());
107-
injector.bindModule(new OperationListModule());
108-
injector.bindModule(new OperationListEditorModule());
71+
injector.bindModule(new ProductSubscribeDesignModule());
72+
injector.bindModule(new OperationListDesignModule());
10973
injector.bindModule(new OperationDetailsDesignModule());
110-
injector.bindModule(new ReportsModule());
111-
injector.bindModule(new ReportsEditorModule());
112-
injector.bindModule(new ResetPasswordModule());
74+
injector.bindModule(new ReportsDesignModule());
11375
injector.bindModule(new ResetPasswordDesignModule());
114-
injector.bindModule(new ConfirmPasswordModule());
115-
injector.bindModule(new ConfirmPasswordEditorModule());
116-
injector.bindModule(new ChangePasswordModule());
117-
injector.bindModule(new ChangePasswordEditorModule());
76+
injector.bindModule(new ConfirmPasswordDesignModule());
77+
injector.bindModule(new ChangePasswordDesignModule());
11878
injector.bindModule(new ValidationSummaryDesignModule());
119-
injector.bindModule(new ValidationSummaryModule());
12079
injector.bindModule(new CustomHtmlDesignModule());
12180
injector.bindModule(new CustomWidgetDesignModule());
12281
injector.bindModule(new RoleBasedSecurityDesignModule());

0 commit comments

Comments
 (0)