Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
c6eeab1
Upgrade Ember CLI from 3.15.0 to 3.28.6
dvonanderson Sep 1, 2025
5518d7d
Update ember-power-select for compatibility with Ember 3.28
dvonanderson Sep 1, 2025
21f7b7c
Fix major template deprecation warnings
dvonanderson Sep 1, 2025
6a18012
Major progress on Ember 3.28 upgrade and deprecation fixes
dvonanderson Sep 1, 2025
23ecfb9
Fix {{#let}} with {{else}} template error
dvonanderson Sep 1, 2025
7eeaf9d
Modernize templates with ember-intl + angle brackets
dvonanderson Sep 1, 2025
9b87e0a
🚀 MASSIVE TEMPLATE MODERNIZATION: 199 templates converted to angle br…
dvonanderson Sep 1, 2025
592cf89
Fix codemod edge case and complete systematic template modernization
dvonanderson Sep 1, 2025
3829a26
Strengthen foundation for Ember 4.x+ with component modernization
dvonanderson Sep 2, 2025
edc84e3
feat: Convert routes, controllers, services and components to native …
dvonanderson Sep 3, 2025
cb5b8a6
feat: modernize components to native ES6 classes and fix codemod issues
dvonanderson Sep 3, 2025
c8e0a20
refactor: modernize app.js to remove deprecated .reopen() patterns
dvonanderson Sep 3, 2025
5286eb5
fix: resolve currentRouteModel runtime errors
dvonanderson Sep 3, 2025
ae40e8f
feat: Complete ember-native-class-codemod modernization and fix runti…
dvonanderson Sep 3, 2025
39db9eb
Migrate from ember-cli-file-picker to ember-file-upload v9.5.0
dvonanderson Sep 4, 2025
b96e0b6
Replace ember-copy with custom copy utilities
dvonanderson Sep 4, 2025
106d7ef
- Remove ember-copy
dvonanderson Sep 4, 2025
f25f0ca
Migrate from deprecated addons to modern alternatives
dvonanderson Sep 4, 2025
55c0915
Fix ember-link-component deprecation warning
dvonanderson Sep 4, 2025
a0aa00c
Update ember addons to resolve deprecation warnings
dvonanderson Sep 5, 2025
29732d5
Fix htmlSafe import deprecation warnings
dvonanderson Sep 5, 2025
d35770d
Add htmlSafe polyfill for backward compatibility
dvonanderson Sep 5, 2025
6501924
Fix ember-tether runtime errors with @ember/string shim
dvonanderson Sep 5, 2025
0f3c9f1
Migrate from ember-font-awesome to @fortawesome/ember-fontawesome
dvonanderson Sep 7, 2025
ba0b46b
Downgrade ember-modal-dialog to resolve runtime errors
dvonanderson Sep 7, 2025
81c3360
hold for review
dvonanderson Sep 9, 2025
f71c2cc
Update templates and components for Ember upgrade
dvonanderson Sep 14, 2025
cbf7cfc
added a future bootstrap migration plan
dvonanderson Sep 14, 2025
9a45f69
Replace ember-crumbly with custom breadcrumb implementation
dvonanderson Sep 14, 2025
006a07d
fix: resolve ember-toggle import and array helper conflicts
dvonanderson Sep 14, 2025
6cff8da
refactor validation.scss
dvonanderson Sep 15, 2025
4826eee
feat: Add date-updated field functionality to modern Ember routes
dvonanderson Sep 16, 2025
a3c2745
fix: resolve ember-intl 'locales is not iterable' error
dvonanderson Sep 17, 2025
484de0c
refactor: ember upgrade cleanup and route improvements
dvonanderson Sep 17, 2025
6cba2bc
fix: upgrade ember-cli-babel to resolve Ember Global deprecation
dvonanderson Sep 18, 2025
7ec10a8
feat: migrate from bootstrap-3-card to native Bootstrap 4/5 cards and…
dvonanderson Sep 23, 2025
1fbdb37
change bootstrap back until we find a nother solution.
dvonanderson Sep 30, 2025
cceabd6
feat: merge develop branch changes while maintaining @classic decorators
dvonanderson Sep 30, 2025
53496ba
revisions to workflow
dvonanderson Oct 28, 2025
59f6e0a
tune up specific files
dvonanderson Nov 15, 2025
dc62136
Merge branch 'develop' into dvonanderson/feature/ember-upgrade
dvonanderson Dec 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

root = true


[*]
end_of_line = lf
charset = utf-8
Expand Down
59 changes: 33 additions & 26 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,58 +2,65 @@

module.exports = {
root: true,
parser: 'babel-eslint',
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
legacyDecorators: true
}
legacyDecorators: true,
},
requireConfigFile: false,
babelOptions: {
plugins: [['@babel/plugin-proposal-decorators', { legacy: true }]],
},
},
plugins: [
'ember'
],
plugins: ['ember'],
extends: [
'eslint:recommended',
'plugin:ember/recommended'
'plugin:ember/recommended',
'plugin:prettier/recommended',
],
env: {
browser: true
browser: true,
},
rules: {
//'ember/new-module-imports': 'off',
'no-console': 1,
'ember/no-observers': 1
'ember/no-observers': 1,
},
overrides: [
// node files
{
files: [
'.eslintrc.js',
'.template-lintrc.js',
'ember-cli-build.js',
'testem.js',
'blueprints/*/index.js',
'config/**/*.js',
'lib/*/index.js',
'server/**/*.js'
'./.eslintrc.js',
'./.prettierrc.js',
'./.template-lintrc.js',
'./ember-cli-build.js',
'./testem.js',
'./blueprints/*/index.js',
'./config/**/*.js',
'./lib/*/index.js',
'./server/**/*.js',
],
parserOptions: {
sourceType: 'script'
sourceType: 'script',
},
env: {
browser: false,
node: true,
es6: true
},
plugins: ['node'],
rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
// add your custom rules and overrides for node files here

extends: ['plugin:node/recommended'],
rules: {
// this can be removed once the following is fixed
// https://github.com/mysticatea/eslint-plugin-node/issues/77
'node/no-unpublished-require': 'off'
})
}
]
'node/no-unpublished-require': 'off',
},
},
{
// Test files:
files: ['tests/**/*-test.{js,ts}'],
extends: ['plugin:qunit/recommended'],
},
],
};
1 change: 0 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,4 @@
/package-lock.json.ember-try
/yarn.lock.ember-try


.yarn/*
12 changes: 3 additions & 9 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
// prettier.config.js, .prettierrc.js, prettier.config.cjs, or .prettierrc.cjs
'use strict';

/**
* @see https://prettier.io/docs/en/configuration.html
* @type {import("prettier").Config}
*/
const config = {
module.exports = {
trailingComma: 'es5',
tabWidth: 2,
semi: true,
singleQuote: true,
}

module.exports = config
};
240 changes: 240 additions & 0 deletions TESTING_STRATEGY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
# Bootstrap Migration Testing Strategy

## Overview
Comprehensive testing approach to ensure Bootstrap migration maintains functionality and visual consistency across the mdEditor application.

## Testing Phases

### Phase 1: Pre-Migration Baseline
- [ ] Capture visual snapshots of all major pages/components
- [ ] Document current responsive behavior
- [ ] Create component interaction test cases
- [ ] Establish accessibility baseline scores

### Phase 2: Component-Level Testing
- [ ] Unit test each migrated component
- [ ] Visual regression testing per component
- [ ] Responsive behavior validation
- [ ] Accessibility impact assessment

### Phase 3: Integration Testing
- [ ] End-to-end user workflow testing
- [ ] Cross-component interaction testing
- [ ] Performance impact assessment
- [ ] Browser compatibility testing

## Testing Tools & Setup

### Visual Regression Testing
**Recommended: Percy.io or Chromatic**
```bash
# Setup example for Percy
npm install --save-dev @percy/cli @percy/ember
```

**Test Configuration:**
- Capture full page screenshots
- Test multiple viewport sizes (mobile, tablet, desktop)
- Include hover and focus states
- Test dark/light theme variations if applicable

### Responsive Testing Matrix
| Breakpoint | Width | Test Scenarios |
|------------|-------|----------------|
| Mobile | 375px | Navigation collapse, form layout, grid stacking |
| Tablet | 768px | Grid behavior, navbar changes, card layouts |
| Desktop | 1200px | Full layout, all columns visible |
| Large | 1600px | Custom xxl/xxxl grid behavior |

### Browser Compatibility Matrix
| Browser | Versions | Priority | Notes |
|---------|----------|----------|-------|
| Chrome | Latest 2 | High | Primary development browser |
| Firefox | Latest 2 | High | Standards compliance |
| Safari | Latest 2 | High | WebKit rendering engine |
| Edge | Latest 2 | Medium | Chromium-based |
| IE11 | 11 | Low | Legacy support (if required) |

## Component Test Checklist

### Grid System
- [ ] Column widths at all breakpoints
- [ ] Offset behavior
- [ ] Custom xxl/xxxl breakpoints
- [ ] Nested grid behavior
- [ ] Row gutters and spacing

### Navigation
- [ ] Navbar collapse/expand on mobile
- [ ] Dropdown menu behavior
- [ ] Active state styling
- [ ] Breadcrumb navigation
- [ ] Sidebar navigation functionality

### Forms
- [ ] Form control styling and sizing
- [ ] Input group components
- [ ] Validation state displays
- [ ] Form layout (horizontal/vertical)
- [ ] Date picker integration
- [ ] File upload components

### Buttons & Interactive Elements
- [ ] Button sizes and variants
- [ ] Button group behavior
- [ ] Hover and focus states
- [ ] Disabled state styling
- [ ] Toggle functionality

### Cards/Panels
- [ ] Card layouts and spacing
- [ ] Header/body/footer sections
- [ ] Card groups and columns
- [ ] Collapse/expand functionality
- [ ] Color variants

### Modals & Overlays
- [ ] Modal opening/closing
- [ ] Modal sizing options
- [ ] Backdrop behavior
- [ ] Scrolling with long content
- [ ] Nested modal scenarios

### Tables
- [ ] Responsive table behavior
- [ ] Striped and hover effects
- [ ] Sorting functionality
- [ ] Pagination controls
- [ ] Column resizing

## User Workflow Testing

### Critical User Paths
1. **Metadata Creation Workflow**
- [ ] Create new record
- [ ] Navigate through all form sections
- [ ] Save and validate
- [ ] Preview functionality

2. **Data Import/Export**
- [ ] File upload interface
- [ ] Progress indicators
- [ ] Error handling displays
- [ ] Export format selection

3. **Navigation & Search**
- [ ] Menu navigation
- [ ] Search functionality
- [ ] Filter applications
- [ ] Results display

4. **Settings & Configuration**
- [ ] User preferences
- [ ] System configuration
- [ ] Profile management

## Automated Testing Implementation

### QUnit Integration
```javascript
// Example component test
test('bootstrap button component renders correctly', function(assert) {
this.render(hbs`{{md-button text="Test" type="primary"}}`);

assert.dom('.btn').exists('Button element exists');
assert.dom('.btn-primary').exists('Primary class applied');
assert.dom('.btn').hasText('Test', 'Button text correct');
});
```

### Visual Regression Setup
```javascript
// Percy snapshot example
import percySnapshot from '@percy/ember';

test('metadata form layout', async function(assert) {
await visit('/metadata/new');
await percySnapshot('Metadata Form - Desktop');

// Test mobile layout
await resizeWindow(375, 667);
await percySnapshot('Metadata Form - Mobile');
});
```

## Performance Testing

### Metrics to Track
- [ ] CSS bundle size reduction
- [ ] JavaScript bundle impact
- [ ] First Contentful Paint (FCP)
- [ ] Largest Contentful Paint (LCP)
- [ ] Cumulative Layout Shift (CLS)

### Testing Tools
- Lighthouse CI for automated performance testing
- WebPageTest for detailed analysis
- Bundle analyzer for size optimization

## Accessibility Testing

### Automated Tools
- [ ] axe-core integration
- [ ] WAVE browser extension
- [ ] Lighthouse accessibility audit

### Manual Testing
- [ ] Screen reader testing (NVDA, JAWS, VoiceOver)
- [ ] Keyboard navigation testing
- [ ] Focus management verification
- [ ] Color contrast validation

### Accessibility Checklist
- [ ] Semantic HTML structure maintained
- [ ] ARIA labels and descriptions
- [ ] Focus indicators visible
- [ ] Color not sole means of conveying information
- [ ] Proper heading hierarchy

## Rollback Criteria

### Critical Issues Requiring Rollback
- [ ] > 10% performance degradation
- [ ] Major accessibility regressions
- [ ] Core workflow breakage
- [ ] Cross-browser compatibility failures
- [ ] Visual regressions in critical components

## Testing Schedule

### Weekly Testing Cycles
**Week 1-2: Pre-migration**
- Baseline establishment
- Tool setup and configuration

**Week 3-6: Bootstrap 4 Migration**
- Component-by-component testing
- Weekly visual regression runs
- Performance monitoring

**Week 7-8: SCSS Reduction**
- Impact assessment testing
- Bundle size optimization verification

**Week 9-12: Bootstrap 5 Migration**
- JavaScript functionality testing
- Accessibility audit
- Cross-browser validation

**Week 13-14: Final Testing**
- Complete user workflow testing
- Performance benchmarking
- Final accessibility audit

## Success Criteria
- [ ] Zero critical functionality regressions
- [ ] Visual consistency maintained (< 5% acceptable variance)
- [ ] Performance maintained or improved
- [ ] Accessibility scores maintained or improved
- [ ] All supported browsers pass testing matrix
- [ ] User acceptance testing completed successfully
8 changes: 5 additions & 3 deletions app/adapters/application.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import classic from 'ember-classic-decorator';
import Adapter from 'ember-local-storage/adapters/adapter';
import { v4 } from 'uuid';

export default Adapter.extend({
@classic
export default class Application extends Adapter {
generateIdForRecord(store, type, inputProperties) {
if (inputProperties.id) {
return inputProperties.id;
Expand All @@ -13,5 +15,5 @@ export default Adapter.extend({
return shortId;
}
return inputProperties.uuid.split('-')[0];
},
});
}
}
Loading