Skip to content

Commit d3a81cc

Browse files
Merge pull request #5626 from topcoder-platform/develop
Release v1.10.3
2 parents 87d9595 + 609b41f commit d3a81cc

File tree

13 files changed

+231
-25
lines changed

13 files changed

+231
-25
lines changed

.circleci/config.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ jobs:
248248
source buildenvvar
249249
./automated-smoke-test/smoketest.sh automation-config-staging.json prod
250250
- store_artifacts:
251-
path: /automated-smoke-test/test-results
251+
path: ./automated-smoke-test/test-results
252252

253253
# Automated Smoke Testing against Production
254254
Smoke-Testing-On-Production:
@@ -273,6 +273,8 @@ jobs:
273273
source awsenvconf
274274
source buildenvvar
275275
./automated-smoke-test/smoketest.sh automation-config-prod.json prod
276+
- store_artifacts:
277+
path: ./automated-smoke-test/test-results
276278

277279
# Test job for the cases when we do not need deployment. It just rapidly
278280
# installs (updates) app dependencies, and runs tests (ESLint, Stylelint,
@@ -362,14 +364,15 @@ workflows:
362364
filters:
363365
branches:
364366
only:
365-
- free
367+
- new-tabs-theme
366368
# This is stage env for production QA releases
367369
- "build-prod-staging":
368370
context : org-global
369371
filters: &filters-staging
370372
branches:
371373
only:
372-
- develop
374+
- develop
375+
- ast-member-profile
373376
# Production builds are exectuted
374377
# when PR is merged to the master
375378
# Don't change anything in this configuration

automated-smoke-test/conf.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ exports.config = {
3434
framework: 'jasmine2',
3535

3636
specs: [
37-
// '../temp/test-suites/tc-login.spec.js'
37+
'../temp/test-suites/tc-login.spec.js',
3838
// '../temp/test-suites/tc-tools.spec.js',
3939
// '../temp/test-suites/tc-account.spec.js',
4040
// '../temp/test-suites/tc-profile.spec.js',
@@ -44,7 +44,7 @@ exports.config = {
4444
'../temp/test-suites/tc-challenge-listing.spec.js',
4545
'../temp/test-suites/tc-challenge-detail.spec.js',
4646
// '../temp/test-suites/tc-my-dashboard.spec.js',
47-
// '../temp/test-suites/tc-member-profile.spec.js',
47+
'../temp/test-suites/tc-member-profile.spec.js',
4848
],
4949

5050
// Options to be passed to Jasmine.

automated-smoke-test/config/automation-config-beta.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,18 +152,18 @@
152152
"numberOfSubtracks": 11,
153153
"winInfo": {
154154
"name": "WEB DESIGNS",
155-
"info": "258",
155+
"info": "268",
156156
"infoTitle": "WINS",
157157
"link": "https://beta-community-app.topcoder.com/members/iamtong/details/?track=DESIGN&subTrack=WEB_DESIGNS"
158158
}
159159
},
160160
"developmentProfile": {
161161
"handle": "iamtong",
162162
"trackName": "DEVELOP",
163-
"numberOfSubtracks": 8,
163+
"numberOfSubtracks": 7,
164164
"winInfo": {
165165
"name": "FIRST2FINISH",
166-
"info": "56",
166+
"info": "61",
167167
"infoTitle": "WINS",
168168
"link": "https://beta-community-app.topcoder.com/members/iamtong/details/?track=DEVELOP&subTrack=FIRST_2_FINISH"
169169
}

automated-smoke-test/config/automation-config-prod.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,18 @@
148148
"numberOfSubtracks": 11,
149149
"winInfo": {
150150
"name": "WEB DESIGNS",
151-
"info": "258",
151+
"info": "268",
152152
"infoTitle": "WINS",
153153
"link": "https://www.topcoder.com/members/iamtong/details/?track=DESIGN&subTrack=WEB_DESIGNS"
154154
}
155155
},
156156
"developmentProfile": {
157157
"handle": "iamtong",
158158
"trackName": "DEVELOP",
159-
"numberOfSubtracks": 8,
159+
"numberOfSubtracks": 7,
160160
"winInfo": {
161161
"name": "FIRST2FINISH",
162-
"info": "56",
162+
"info": "61",
163163
"infoTitle": "WINS",
164164
"link": "https://www.topcoder.com/members/iamtong/details/?track=DEVELOP&subTrack=FIRST_2_FINISH"
165165
}

automated-smoke-test/config/automation-config-staging.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,18 +153,18 @@
153153
"numberOfSubtracks": 11,
154154
"winInfo": {
155155
"name": "WEB DESIGNS",
156-
"info": "258",
156+
"info": "268",
157157
"infoTitle": "WINS",
158158
"link": "https://staging-community-app.topcoder.com/members/iamtong/details/?track=DESIGN&subTrack=WEB_DESIGNS"
159159
}
160160
},
161161
"developmentProfile": {
162162
"handle": "iamtong",
163163
"trackName": "DEVELOP",
164-
"numberOfSubtracks": 8,
164+
"numberOfSubtracks": 7,
165165
"winInfo": {
166166
"name": "FIRST2FINISH",
167-
"info": "56",
167+
"info": "61",
168168
"infoTitle": "WINS",
169169
"link": "https://staging-community-app.topcoder.com/members/iamtong/details/?track=DEVELOP&subTrack=FIRST_2_FINISH"
170170
}

automated-smoke-test/page-objects/pages/topcoder/login/login.constants.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ export class LoginPageConstants {
55
static get errors() {
66
return {
77
InvalidPassword:
8-
'That password is incorrect. Please check that you entered the right one.',
8+
'WRONG USERNAME OR PASSWORD.',
99
MemberNotPresent:
10-
"We couldn't find a member with that username. Please check that you entered it correctly.",
10+
"WRONG USERNAME OR PASSWORD.",
1111
};
1212
}
1313
}

automated-smoke-test/page-objects/pages/topcoder/login/login.helper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class LoginPageHelper {
4848
* @param {String} password
4949
*/
5050
public static async verifyLogin(username: string, password: string) {
51-
await CommonHelper.verifyCurrentUrl(ConfigHelper.getLoginUrl());
51+
await CommonHelper.verifyCurrentUrlToContain(ConfigHelper.getLoginUrl());
5252
await this.loginPageObject.waitForLoginForm();
5353
await this.loginPageObject.fillLoginForm(username, password);
5454
const homePage = await this.loginPageObject.waitForHomePage();

automated-smoke-test/page-objects/pages/topcoder/login/login.po.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class LoginPage {
4848
* Get Error message
4949
*/
5050
public get errorMessage() {
51-
return ElementHelper.getElementByClassName('form-error');
51+
return ElementHelper.getElementByCss('.auth0-global-message.auth0-global-message-error .animated.fadeInUp span');
5252
}
5353

5454
/**

automated-smoke-test/test-suites/tc-login.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ describe('Topcoder Login Page Tests: ', () => {
3232
* Verifies User cannot login using invalid username
3333
*/
3434
it('[TC_002] should Verify User cannot login using invalid username', async () => {
35-
const invalidUsername = testData.login.invalidUsername;
35+
const { invalidUsername } = testData.login;
3636
const password = ConfigHelper.getPassword();
3737
await LoginPageHelper.verifyLoginWithInvalidUserName(
3838
invalidUsername,
39-
password
39+
password,
4040
);
4141
});
4242

@@ -45,10 +45,10 @@ describe('Topcoder Login Page Tests: ', () => {
4545
*/
4646
it('[TC_003] should Verify User cannot login using invalid password', async () => {
4747
const username = ConfigHelper.getUserName();
48-
const inavlidPassword = testData.login.invalidPassword;
48+
const { invalidPassword } = testData.login;
4949
await LoginPageHelper.verifyLoginWithInvalidPassword(
5050
username,
51-
inavlidPassword
51+
invalidPassword,
5252
);
5353
});
5454

src/shared/components/Contentful/Tabs/Tabs.jsx

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import underlineTheme from './themes/underline.scss';
2626
import underlineDarkTheme from './themes/underline-dark.scss';
2727
import verticalTheme from './themes/vertical.scss';
2828
import pillsTheme from './themes/pills.scss';
29+
import underlineBoxTheme from './themes/underline-box.scss';
2930

3031
export const TAB_THEMES = {
3132
Default: defaultTheme,
@@ -36,13 +37,15 @@ export const TAB_THEMES = {
3637
'Underline dark': underlineDarkTheme,
3738
Vertical: verticalTheme,
3839
Pills: pillsTheme,
40+
'Underline box': underlineBoxTheme,
3941
};
4042

4143
export default class TabsItemsLoader extends Component {
4244
constructor(props) {
4345
super(props);
4446
this.state = {
4547
tabIndex: props.selected || 0,
48+
mobileTabsShow: false,
4649
};
4750

4851
this.updatePageUrl.bind(this);
@@ -83,8 +86,9 @@ export default class TabsItemsLoader extends Component {
8386
environment,
8487
theme,
8588
tabId,
89+
themeName,
8690
} = this.props;
87-
const { tabIndex } = this.state;
91+
const { tabIndex, mobileTabsShow } = this.state;
8892

8993
return (
9094
<ContentfulLoader
@@ -97,11 +101,39 @@ export default class TabsItemsLoader extends Component {
97101
className={theme.container}
98102
selectedIndex={tabIndex}
99103
selectedTabClassName={theme.selected}
100-
onSelect={tIndx => this.setState({ tabIndex: tIndx })}
104+
onSelect={tIndx => this.setState({ tabIndex: tIndx, mobileTabsShow: false })}
101105
forceRenderTabPanel
102106
>
103107
<div className={theme.tabListWrap}>
104-
<TabList className={theme.tablist}>
108+
{
109+
themeName === 'Underline box' ? (
110+
<button type="button" className={theme.tabListMobileTrigger} onClick={() => this.setState({ mobileTabsShow: !mobileTabsShow })}>
111+
<MarkdownRenderer
112+
markdown={_.toArray(data.entries.items)[tabIndex].fields.tab}
113+
/>
114+
<svg className={mobileTabsShow ? theme.tabListMobileTriggerSVGOpen : theme.tabListMobileTriggerSVG} width="16px" height="10px" viewBox="0 0 16 10" version="1.1" xmlns="http://www.w3.org/2000/svg">
115+
<defs>
116+
<polygon id="path-1" points="7.7 9.2 0 1.5 1.4 0 7.7 6.3 14 0 15.4 1.5" />
117+
</defs>
118+
<g id="Mobile" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
119+
<g id="01" transform="translate(-228.000000, -315.000000)">
120+
<g id="Group-6" transform="translate(16.000000, 289.000000)">
121+
<g id="Group-4" transform="translate(126.000000, 21.000000)">
122+
<g id="icons/arrow/minimal-down" transform="translate(86.300000, 5.400000)">
123+
<mask id="mask-2" fill="white">
124+
<use xlinkHref="#path-1" />
125+
</mask>
126+
<use id="icon-color" fill="#2A2A2A" xlinkHref="#path-1" />
127+
</g>
128+
</g>
129+
</g>
130+
</g>
131+
</g>
132+
</svg>
133+
</button>
134+
) : null
135+
}
136+
<TabList className={[theme.tablist, mobileTabsShow ? theme.visible : null]}>
105137
{
106138
_.map(data.entries.items, tabItem => (
107139
<Tab
@@ -208,4 +240,5 @@ TabsItemsLoader.propTypes = {
208240
selected: PT.number,
209241
theme: PT.shape().isRequired,
210242
tabId: PT.string.isRequired,
243+
themeName: PT.string.isRequired,
211244
};

src/shared/components/Contentful/Tabs/index.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ function ContentfulTabs(props) {
3535
selected={fields.selected}
3636
theme={TAB_THEMES[fields.theme || 'Default']}
3737
tabId={fields.urlQueryName || id}
38+
themeName={fields.theme}
3839
/>
3940
);
4041
}}

0 commit comments

Comments
 (0)