Skip to content

Commit 9f87ee6

Browse files
Merge branch 'main' into AXON-537/e2e-test-bb-create-pullrequest
2 parents f59006f + 02eb1ab commit 9f87ee6

File tree

6 files changed

+99
-18
lines changed

6 files changed

+99
-18
lines changed

.github/workflows/build.yaml

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
name: Build
2+
permissions:
3+
contents: read
24

35
on:
46
push:
@@ -7,47 +9,74 @@ on:
79

810
jobs:
911

10-
build:
11-
12+
lint:
1213
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-node@v4
17+
with:
18+
node-version: 20
19+
cache: 'npm'
1320

21+
- name: Install dependencies
22+
run: |
23+
npm ci --no-audit
24+
npm audit
25+
26+
- name: Run linter
27+
run: npm run lint
28+
29+
tests:
30+
needs: [lint]
31+
runs-on: ubuntu-latest
32+
33+
strategy:
34+
fail-fast: true
35+
matrix:
36+
test-type: [unit, e2e]
37+
1438
env:
1539
ATLASCODE_FX3_API_KEY: ${{ secrets.ATLASCODE_FX3_API_KEY }}
1640
ATLASCODE_FX3_ENVIRONMENT: ${{ vars.ATLASCODE_FX3_ENVIRONMENT }}
1741
ATLASCODE_FX3_TARGET_APP: ${{ vars.ATLASCODE_FX3_TARGET_APP }}
1842
ATLASCODE_FX3_TIMEOUT: ${{ vars.ATLASCODE_FX3_TIMEOUT }}
1943

2044
steps:
21-
2245
- uses: actions/checkout@v4
23-
24-
- name: Set up Node.js
25-
uses: actions/setup-node@v4
46+
- uses: actions/setup-node@v4
2647
with:
2748
node-version: 20
2849
cache: 'npm'
2950

3051
- name: Install dependencies
31-
run: |
32-
npm ci --no-audit
33-
npm audit
52+
run: npm ci --no-audit
3453

3554
- name: Build and package the extension
55+
if: matrix.test-type == 'e2e'
3656
run: npm run extension:package
3757

38-
- name: Run linter
39-
run: npm run lint
40-
41-
- name: Run unit tests
42-
run: npm run test
43-
4458
- name: Generate SSL certs for E2E test
59+
if: matrix.test-type == 'e2e'
4560
run: npm run test:e2e:sslcerts
4661

4762
- name: Fetch E2E image
63+
if: matrix.test-type == 'e2e'
4864
run: |
4965
docker pull ghcr.io/atlassian/atlascode-e2e:latest
5066
docker tag ghcr.io/atlassian/atlascode-e2e:latest atlascode-e2e
5167
68+
- name: Run unit tests
69+
if: matrix.test-type == 'unit'
70+
run: npm run test
71+
5272
- name: Run E2E tests
73+
if: matrix.test-type == 'e2e'
5374
run: npm run test:e2e:docker
75+
76+
- name: Upload E2E artifacts
77+
if: matrix.test-type == 'e2e' && always() && hashFiles('./test-results/**') != ''
78+
uses: actions/upload-artifact@v4
79+
with:
80+
name: e2e-test-results
81+
path: ./test-results
82+
retention-days: 1

src/react/atlascode/rovo-dev/RovoDev.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,3 +579,11 @@ body {
579579
outline: var(--vscode-focusBorder) solid 1px;
580580
}
581581

582+
.ai-disclaimer {
583+
text-align: center;
584+
font-size: 11px;
585+
color: var(--vscode-descriptionForeground);
586+
margin-top: 8px;
587+
opacity: 0.7;
588+
}
589+

src/react/atlascode/rovo-dev/rovoDevView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ const RovoDevView: React.FC = () => {
641641
}}
642642
/>
643643
</div>
644+
<div className="ai-disclaimer">Uses AI. Verify Results</div>
644645
</div>
645646
</div>
646647
);

src/views/notifications/authNotifier.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ export class AuthNotifier extends Disposable implements NotificationNotifier {
4141
}
4242

4343
public fetchNotifications(): void {
44+
if (process.env.ROVODEV_BBY) {
45+
return;
46+
}
4447
this.checkJiraAuth();
4548
// we explicitly are not checking for bitbucket auth here: https://www.loom.com/share/0e96dcef1e524166929057074fc25e40?sid=6edcc48e-7ee8-46cb-a700-14fbd779b6de
4649
}

src/webviews/components/issue/AbstractIssueEditorPage.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,11 @@ export abstract class AbstractIssueEditorPage<
869869
onChange={(selected: any) => {
870870
this.handleSelectChange(selectField, selected);
871871
}}
872+
onMenuClose={() => {
873+
if (this.state.loadingField === field.key) {
874+
this.setState({ isSomethingLoading: false, loadingField: '' });
875+
}
876+
}}
872877
/>
873878
);
874879
}
@@ -904,6 +909,11 @@ export abstract class AbstractIssueEditorPage<
904909
this.handleSelectChange(selectField, selected);
905910
},
906911
)}
912+
onMenuClose={() => {
913+
if (this.state.loadingField === field.key) {
914+
this.setState({ isSomethingLoading: false, loadingField: '' });
915+
}
916+
}}
907917
/>
908918
{errDiv}
909919
</React.Fragment>
@@ -935,6 +945,11 @@ export abstract class AbstractIssueEditorPage<
935945
onChange={(selected: any) => {
936946
this.handleSelectChange(selectField, selected);
937947
}}
948+
onMenuClose={() => {
949+
if (this.state.loadingField === field.key) {
950+
this.setState({ isSomethingLoading: false, loadingField: '' });
951+
}
952+
}}
938953
/>
939954
);
940955
}
@@ -978,6 +993,11 @@ export abstract class AbstractIssueEditorPage<
978993
this.handleSelectChange(selectField, selected);
979994
},
980995
)}
996+
onMenuClose={() => {
997+
if (this.state.loadingField === field.key) {
998+
this.setState({ isSomethingLoading: false, loadingField: '' });
999+
}
1000+
}}
9811001
/>
9821002
{errDiv}
9831003
</React.Fragment>
@@ -1006,6 +1026,11 @@ export abstract class AbstractIssueEditorPage<
10061026
loadOptions={async (input: any) =>
10071027
await this.loadSelectOptionsForField(field as SelectFieldUI, input)
10081028
}
1029+
onMenuClose={() => {
1030+
if (this.state.loadingField === field.key) {
1031+
this.setState({ isSomethingLoading: false, loadingField: '' });
1032+
}
1033+
}}
10091034
/>
10101035
);
10111036
}
@@ -1050,6 +1075,11 @@ export abstract class AbstractIssueEditorPage<
10501075
loadOptions={async (input: any) =>
10511076
await this.loadSelectOptionsForField(field as SelectFieldUI, input)
10521077
}
1078+
onMenuClose={() => {
1079+
if (this.state.loadingField === field.key) {
1080+
this.setState({ isSomethingLoading: false, loadingField: '' });
1081+
}
1082+
}}
10531083
/>
10541084
{errDiv}
10551085
</React.Fragment>
@@ -1096,6 +1126,11 @@ export abstract class AbstractIssueEditorPage<
10961126
loadOptions={async (input: any) =>
10971127
await this.loadSelectOptionsForField(field as SelectFieldUI, input)
10981128
}
1129+
onMenuClose={() => {
1130+
if (this.state.loadingField === field.key) {
1131+
this.setState({ isSomethingLoading: false, loadingField: '' });
1132+
}
1133+
}}
10991134
></AsyncCreatableSelect>
11001135
);
11011136
}
@@ -1144,6 +1179,11 @@ export abstract class AbstractIssueEditorPage<
11441179
loadOptions={async (input: any) =>
11451180
await this.loadSelectOptionsForField(field as SelectFieldUI, input)
11461181
}
1182+
onMenuClose={() => {
1183+
if (this.state.loadingField === field.key) {
1184+
this.setState({ isSomethingLoading: false, loadingField: '' });
1185+
}
1186+
}}
11471187
></AsyncCreatableSelect>
11481188
{errDiv}
11491189
</React.Fragment>

src/webviews/components/issue/create-issue-screen/CreateIssuePage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,15 +284,15 @@ export default class CreateIssuePage extends AbstractIssueEditorPage<Emit, Accep
284284
project: newValue,
285285
fieldValues: this.state.fieldValues,
286286
});
287-
}
288-
289-
if (field.valueType === ValueType.IssueType) {
287+
} else if (field.valueType === ValueType.IssueType) {
290288
this.setState({ loadingField: field.key, isSomethingLoading: true });
291289
this.postMessage({
292290
action: 'setIssueType',
293291
issueType: newValue,
294292
fieldValues: this.state.fieldValues,
295293
});
294+
} else {
295+
this.setState({ isSomethingLoading: false, loadingField: '' });
296296
}
297297
};
298298

0 commit comments

Comments
 (0)