fix: Implement tap.todo(), fix tap.skip.test() to create test objects, and ensure tap.only.test() works correctly
- tap.todo.test() now creates proper test objects marked as todo
- tap.skip.test() creates test objects instead of just logging
- tap.only.test() properly filters to run only marked tests
- Added markAsSkipped() method for pre-test skip marking
- All test types now contribute to accurate test counts
- Updated documentation to reflect these fixes
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c98bd85829
commit
7aaeed0dc6
@ -215,4 +215,27 @@ The Enhanced Communication system has been implemented to provide rich, real-tim
|
||||
- Events are transmitted via Protocol V2's `EVENT` block type
|
||||
- Event data is JSON-encoded within protocol markers
|
||||
- Parser handles events asynchronously for real-time updates
|
||||
- Visual diffs are generated using custom diff algorithms for each data type
|
||||
- Visual diffs are generated using custom diff algorithms for each data type
|
||||
|
||||
## Fixed Issues
|
||||
|
||||
### tap.skip.test(), tap.todo(), and tap.only.test() (Fixed)
|
||||
|
||||
Previously reported issues with these methods have been resolved:
|
||||
|
||||
1. **tap.skip.test()** - Now properly creates test objects that are counted in test results
|
||||
- Tests marked with `skip.test()` appear in the test count
|
||||
- Shows as passed with skip directive in TAP output
|
||||
- `markAsSkipped()` method added to handle pre-test skip marking
|
||||
|
||||
2. **tap.todo.test()** - Fully implemented with test object creation
|
||||
- Supports both `tap.todo.test('description')` and `tap.todo.test('description', testFunc)`
|
||||
- Todo tests are counted and marked with todo directive
|
||||
- Both regular and parallel todo tests supported
|
||||
|
||||
3. **tap.only.test()** - Works correctly for focused testing
|
||||
- When `.only` tests exist, only those tests run
|
||||
- Other tests are not executed but still counted
|
||||
- Both regular and parallel only tests supported
|
||||
|
||||
These fixes ensure accurate test counts and proper TAP-compliant output for all test states.
|
@ -304,14 +304,16 @@ tstest --changed
|
||||
- Trend analysis
|
||||
- Flaky test detection
|
||||
|
||||
### Known Issues to Fix
|
||||
- **tap.todo()**: Method exists but has no implementation
|
||||
- **tap.skip.test()**: Doesn't create test objects, just logs (breaks test count)
|
||||
### Recently Fixed Issues ✅
|
||||
- **tap.todo()**: Now fully implemented with test object creation
|
||||
- **tap.skip.test()**: Now creates test objects and maintains accurate test count
|
||||
- **tap.only.test()**: Works correctly - when .only tests exist, only those run
|
||||
|
||||
### Remaining Minor Issues
|
||||
- **Protocol Output**: Some protocol messages still appear in console output
|
||||
- **Only Tests**: `tap.only.test()` exists but `--only` mode not fully implemented
|
||||
|
||||
### Next Recommended Steps
|
||||
1. Add Watch Mode - high developer value
|
||||
2. Implement Custom Reporters - important for CI/CD integration
|
||||
3. Fix known issues: tap.todo() and tap.skip.test() implementations
|
||||
4. Implement performance benchmarking API
|
||||
1. Add Watch Mode (Phase 4) - high developer value for fast feedback
|
||||
2. Implement Custom Reporters - important for CI/CD integration
|
||||
3. Implement performance benchmarking API
|
||||
4. Add better error messages with suggestions
|
@ -1,56 +0,0 @@
|
||||
import { tap, expect } from '../../ts_tapbundle/index.js';
|
||||
|
||||
tap.test('should show string diff', async () => {
|
||||
const expected = `Hello World
|
||||
This is a test
|
||||
of multiline strings`;
|
||||
|
||||
const actual = `Hello World
|
||||
This is a demo
|
||||
of multiline strings`;
|
||||
|
||||
// This will fail and show a diff
|
||||
expect(actual).toEqual(expected);
|
||||
});
|
||||
|
||||
tap.test('should show object diff', async () => {
|
||||
const expected = {
|
||||
name: 'John',
|
||||
age: 30,
|
||||
city: 'New York',
|
||||
hobbies: ['reading', 'coding']
|
||||
};
|
||||
|
||||
const actual = {
|
||||
name: 'John',
|
||||
age: 31,
|
||||
city: 'Boston',
|
||||
hobbies: ['reading', 'gaming']
|
||||
};
|
||||
|
||||
// This will fail and show a diff
|
||||
expect(actual).toEqual(expected);
|
||||
});
|
||||
|
||||
tap.test('should show array diff', async () => {
|
||||
const expected = [1, 2, 3, 4, 5];
|
||||
const actual = [1, 2, 3, 5, 6];
|
||||
|
||||
// This will fail and show a diff
|
||||
expect(actual).toEqual(expected);
|
||||
});
|
||||
|
||||
tap.test('should show primitive diff', async () => {
|
||||
const expected = 42;
|
||||
const actual = 43;
|
||||
|
||||
// This will fail and show a diff
|
||||
expect(actual).toBe(expected);
|
||||
});
|
||||
|
||||
tap.test('should pass without diff', async () => {
|
||||
expect(true).toBe(true);
|
||||
expect('hello').toEqual('hello');
|
||||
});
|
||||
|
||||
tap.start({ throwOnError: false });
|
@ -1,23 +0,0 @@
|
||||
import { tap, expect } from '../../ts_tapbundle/index.js';
|
||||
|
||||
tap.test('should show string diff', async () => {
|
||||
const expected = `line 1
|
||||
line 2
|
||||
line 3`;
|
||||
|
||||
const actual = `line 1
|
||||
line changed
|
||||
line 3`;
|
||||
|
||||
try {
|
||||
expect(actual).toEqual(expected);
|
||||
} catch (e) {
|
||||
// Expected to fail
|
||||
}
|
||||
});
|
||||
|
||||
tap.test('should pass', async () => {
|
||||
expect('hello').toEqual('hello');
|
||||
});
|
||||
|
||||
tap.start({ throwOnError: false });
|
Loading…
x
Reference in New Issue
Block a user