Compare commits
9 Commits
v4.5.2
...
mashal-m/s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acd118a467 | ||
|
|
ee92f5e63a | ||
|
|
725fcb1b68 | ||
|
|
eca0c852c9 | ||
|
|
e3c77460eb | ||
|
|
0c536b30dd | ||
|
|
f828ce6461 | ||
|
|
d96b54ec71 | ||
|
|
270f416011 |
71
.github/workflows/ci.yml
vendored
71
.github/workflows/ci.yml
vendored
@@ -1,36 +1,55 @@
|
|||||||
name: Default CI
|
name: Default CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- '**'
|
- '**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Nodejs Env
|
- name: Setup Nodejs Env
|
||||||
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
|
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
|
||||||
- name: Setup Nodejs
|
- name: Setup Nodejs
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ env.NODE_VER }}
|
node-version: ${{ env.NODE_VER }}
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Validate package-lock.json changes
|
- name: Validate package-lock.json changes
|
||||||
run: make validate-no-uncommitted-package-lock-changes
|
run: make validate-no-uncommitted-package-lock-changes
|
||||||
- name: Lint
|
- name: Lint
|
||||||
run: npm run lint
|
run: npm run lint
|
||||||
- name: Test
|
- name: Test
|
||||||
run: npm run test
|
run: npm run test
|
||||||
- name: Build
|
- name: Build
|
||||||
run: npm run build
|
run: npm run build
|
||||||
- name: i18n_extract
|
- name: i18n_extract
|
||||||
run: npm run i18n_extract
|
run: npm run i18n_extract
|
||||||
- name: Coverage
|
- name: Coverage
|
||||||
uses: codecov/codecov-action@v3
|
uses: codecov/codecov-action@v3
|
||||||
|
- name: prep plugins
|
||||||
|
run: npm install -D @semantic-release/changelog @semantic-release/git @semantic-release/exec
|
||||||
|
- name: Run semantic release
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_GITHUB_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }}
|
||||||
|
run: npx semantic-release
|
||||||
|
id: ver
|
||||||
|
outputs:
|
||||||
|
output1: ${{ steps.ver.outputs.nextVer }}
|
||||||
|
|
||||||
|
print:
|
||||||
|
needs: tests
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Print version
|
||||||
|
run: echo ${{ needs.tests.outputs.output1 }}
|
||||||
1
.github/workflows/release.yml
vendored
1
.github/workflows/release.yml
vendored
@@ -39,3 +39,4 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_GITHUB_TOKEN }}
|
||||||
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }}
|
||||||
|
|
||||||
23
.releaserc
23
.releaserc
@@ -1,5 +1,22 @@
|
|||||||
{
|
{
|
||||||
"branch": "master",
|
"branches": [
|
||||||
|
"mashal-m/semantic-release-workaround",
|
||||||
|
"master",
|
||||||
|
{
|
||||||
|
"name": "beta",
|
||||||
|
"prerelease": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"@semantic-release/commit-analyzer",
|
||||||
|
"@semantic-release/release-notes-generator",
|
||||||
|
"@semantic-release/github",
|
||||||
|
["@semantic-release/exec",
|
||||||
|
{
|
||||||
|
"publishCmd": "echo ::set-output name=nextVer::${nextRelease.version}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
"tagFormat": "v${version}",
|
"tagFormat": "v${version}",
|
||||||
"verifyConditions": [
|
"verifyConditions": [
|
||||||
"@semantic-release/npm",
|
"@semantic-release/npm",
|
||||||
@@ -20,8 +37,8 @@
|
|||||||
"assets": {
|
"assets": {
|
||||||
"path": "dist/*"
|
"path": "dist/*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"success": [],
|
"success": [],
|
||||||
"fail": []
|
"fail": []
|
||||||
}
|
}
|
||||||
7046
package-lock.json
generated
7046
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
@@ -35,37 +35,35 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@edx/brand": "npm:@edx/brand-openedx@1.2.0",
|
"@edx/brand": "npm:@edx/brand-openedx@1.2.0",
|
||||||
"@edx/browserslist-config": "^1.1.1",
|
"@edx/browserslist-config": "^1.1.1",
|
||||||
"@edx/frontend-build": "12.9.4",
|
"@edx/frontend-build": "12.8.27",
|
||||||
"@edx/frontend-platform": "4.6.1",
|
"@edx/frontend-platform": "4.2.0",
|
||||||
"@edx/reactifex": "^2.1.1",
|
"@edx/reactifex": "^2.1.1",
|
||||||
"@testing-library/dom": "9.3.1",
|
"@testing-library/dom": "9.3.0",
|
||||||
"@testing-library/jest-dom": "5.17.0",
|
"@testing-library/jest-dom": "5.16.5",
|
||||||
"@testing-library/react": "10.4.9",
|
"@testing-library/react": "10.4.9",
|
||||||
"@wojtekmaj/enzyme-adapter-react-17": "0.8.0",
|
|
||||||
"enzyme": "3.11.0",
|
"enzyme": "3.11.0",
|
||||||
|
"enzyme-adapter-react-16": "1.15.7",
|
||||||
"husky": "8.0.3",
|
"husky": "8.0.3",
|
||||||
"jest": "29.6.2",
|
"jest": "29.5.0",
|
||||||
"jest-chain": "1.1.6",
|
"jest-chain": "1.1.6",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "17.0.2",
|
"react": "16.14.0",
|
||||||
"react-dom": "17.0.2",
|
"react-dom": "16.14.0",
|
||||||
"react-redux": "7.2.9",
|
"react-redux": "7.2.9",
|
||||||
"react-router-dom": "5.3.4",
|
"react-router-dom": "5.3.4",
|
||||||
"react-test-renderer": "17.0.2",
|
"react-test-renderer": "16.14.0",
|
||||||
"redux": "4.2.1",
|
"redux": "4.2.1",
|
||||||
"redux-saga": "1.2.3"
|
"redux-saga": "1.2.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@edx/paragon": "20.46.2",
|
"@edx/paragon": "20.36.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "6.4.2",
|
"@fortawesome/fontawesome-svg-core": "6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "6.4.2",
|
"@fortawesome/free-brands-svg-icons": "6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "6.4.2",
|
"@fortawesome/free-regular-svg-icons": "6.3.0",
|
||||||
"@fortawesome/free-solid-svg-icons": "6.4.2",
|
"@fortawesome/free-solid-svg-icons": "6.3.0",
|
||||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||||
"axios-mock-adapter": "1.21.5",
|
|
||||||
"babel-polyfill": "6.26.0",
|
"babel-polyfill": "6.26.0",
|
||||||
"react-responsive": "8.2.0",
|
"react-responsive": "8.2.0",
|
||||||
"react-router-dom": "5.3.4",
|
|
||||||
"react-transition-group": "4.4.5"
|
"react-transition-group": "4.4.5"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ $white: #fff;
|
|||||||
|
|
||||||
.learning-header {
|
.learning-header {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
.course-title-lockup {
|
.course-title-lockup {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
|
import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
import { getConfig } from '@edx/frontend-platform';
|
import { getConfig } from '@edx/frontend-platform';
|
||||||
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||||
import { Dropdown } from '@edx/paragon';
|
import { Dropdown } from '@edx/paragon';
|
||||||
@@ -18,8 +19,8 @@ const AuthenticatedUserDropdown = ({ intl, username }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<a className="text-gray-700" href={`${getConfig().SUPPORT_URL}`}>{intl.formatMessage(messages.help)}</a>
|
<a className="text-gray-700 mr-3" href={`${getConfig().SUPPORT_URL}`}>{intl.formatMessage(messages.help)}</a>
|
||||||
<Dropdown className="user-dropdown ml-3">
|
<Dropdown className="user-dropdown">
|
||||||
<Dropdown.Toggle variant="outline-primary">
|
<Dropdown.Toggle variant="outline-primary">
|
||||||
<FontAwesomeIcon icon={faUserCircle} className="d-md-none" size="lg" />
|
<FontAwesomeIcon icon={faUserCircle} className="d-md-none" size="lg" />
|
||||||
<span data-hj-suppress className="d-none d-md-inline">
|
<span data-hj-suppress className="d-none d-md-inline">
|
||||||
|
|||||||
@@ -49,12 +49,12 @@ const LearningHeader = ({
|
|||||||
<span className="d-block m-0 font-weight-bold course-title">{courseTitle}</span>
|
<span className="d-block m-0 font-weight-bold course-title">{courseTitle}</span>
|
||||||
</div>
|
</div>
|
||||||
{showUserDropdown && authenticatedUser && (
|
{showUserDropdown && authenticatedUser && (
|
||||||
<AuthenticatedUserDropdown
|
<AuthenticatedUserDropdown
|
||||||
username={authenticatedUser.username}
|
username={authenticatedUser.username}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{showUserDropdown && !authenticatedUser && (
|
{showUserDropdown && !authenticatedUser && (
|
||||||
<AnonymousUserMenu />
|
<AnonymousUserMenu />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ describe('Header', () => {
|
|||||||
|
|
||||||
it('displays user button', () => {
|
it('displays user button', () => {
|
||||||
render(<Header />);
|
render(<Header />);
|
||||||
expect(screen.getByText(authenticatedUser.username)).toBeInTheDocument();
|
expect(screen.getByRole('button')).toHaveTextContent(authenticatedUser.username);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('displays course data', () => {
|
it('displays course data', () => {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import Enzyme from 'enzyme';
|
import Enzyme from 'enzyme';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
|
import Adapter from 'enzyme-adapter-react-16';
|
||||||
import '@testing-library/jest-dom';
|
import '@testing-library/jest-dom';
|
||||||
import '@testing-library/jest-dom/extend-expect';
|
import '@testing-library/jest-dom/extend-expect';
|
||||||
import 'babel-polyfill';
|
import 'babel-polyfill';
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
const executeThunk = async (thunk, dispatch, getState) => {
|
|
||||||
await thunk(dispatch, getState);
|
|
||||||
await new Promise(setImmediate);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default executeThunk;
|
|
||||||
Reference in New Issue
Block a user