Skip to content

Commit f8da73d

Browse files
feat(tests): add a script to test replacement URLs for broken links
fix(MBTIQuestion.svelte): blur button on click to improve user experience fix(languages.ts): update image URLs for various programming languages to ensure they point to valid resources refactor(mbti-questions.ts): enhance MBTI questions with concrete scenarios and a software engineering focus The new script allows for automated testing of URLs to identify broken links, improving the reliability of resources. The button blur effect enhances user experience by preventing accidental double clicks. Updating image URLs ensures that the application displays the correct icons for programming languages, while the refactoring of MBTI questions provides more relevant and context-specific scenarios for users, making the assessment more applicable to software engineering.
1 parent 63a73cf commit f8da73d

4 files changed

Lines changed: 164 additions & 58 deletions

File tree

scripts/test-replacement-urls.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env tsx
2+
3+
import { execSync } from 'child_process';
4+
5+
// Test URLs for the broken languages
6+
const testUrls: Record<string, string[]> = {
7+
lisp: [
8+
'https://upload.wikimedia.org/wikipedia/commons/4/48/Lisp_logo.svg',
9+
'https://iconduck.com/api/icons/174249/download?format=svg',
10+
'https://raw.githubusercontent.com/azzamsa/lisp-logo/master/logos/lisp-logo.svg'
11+
],
12+
scratch: [
13+
'https://upload.wikimedia.org/wikipedia/commons/8/82/Scratchlogo.svg',
14+
'https://seeklogo.com/images/S/scratch-logo-33119FC87C-seeklogo.com.png',
15+
'https://icons8.com/preloaders/preloaders/1488/Iphone-spinner-2.gif'
16+
],
17+
tcl: [
18+
'https://upload.wikimedia.org/wikipedia/commons/f/f0/Tcl.svg',
19+
'https://seeklogo.com/images/T/tcl-logo-226A90F66C-seeklogo.com.png',
20+
'https://www.tcl.tk/about/logo.png'
21+
],
22+
crystal: [
23+
'https://upload.wikimedia.org/wikipedia/commons/1/10/Crystal_language_logo.svg',
24+
'https://raw.githubusercontent.com/crystal-lang/crystal-website/master/assets/images/icon.svg',
25+
'https://seeklogo.com/images/C/crystal-logo-B2BDC5D326-seeklogo.com.png'
26+
],
27+
vlang: [
28+
'https://raw.githubusercontent.com/vlang/v-logo/master/dist/v-logo.svg',
29+
'https://seeklogo.com/images/V/v-programming-language-logo-04F947AAD3-seeklogo.com.png',
30+
'https://vlang.io/img/v-logo.png'
31+
]
32+
};
33+
34+
async function testUrl(
35+
url: string
36+
): Promise<{ url: string; status: number | null; working: boolean }> {
37+
try {
38+
const result = execSync(`curl -I -s -w "%{http_code}" -m 10 "${url}"`, {
39+
encoding: 'utf-8',
40+
stdio: 'pipe'
41+
});
42+
43+
const lines = result.trim().split('\n');
44+
const statusCode = parseInt(lines[lines.length - 1]);
45+
const working = statusCode >= 200 && statusCode < 400;
46+
47+
return { url, status: statusCode, working };
48+
} catch {
49+
return { url, status: null, working: false };
50+
}
51+
}
52+
53+
console.log('🔍 Testing replacement URLs...\n');
54+
55+
for (const [lang, urls] of Object.entries(testUrls)) {
56+
console.log(`\n📝 Testing ${lang.toUpperCase()}:`);
57+
58+
for (const url of urls) {
59+
const result = await testUrl(url);
60+
const status = result.working ? '✅ WORKING' : '❌ BROKEN';
61+
console.log(` ${status} (${result.status}) ${result.url}`);
62+
}
63+
}
64+
65+
export {};

src/lib/components/MBTIQuestion.svelte

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@
2121

2222
<div class="answers">
2323
{#each question.answers as answer}
24-
<button class="answer-button" onclick={() => onAnswer(answer.id)}>
24+
<button
25+
class="answer-button"
26+
onclick={(e) => {
27+
e.currentTarget.blur();
28+
onAnswer(answer.id);
29+
}}
30+
>
2531
{answer.text}
2632
</button>
2733
{/each}

src/lib/data/languages.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -985,8 +985,7 @@ export const languages: Language[] = [
985985
mbti: 'ISTJ',
986986
icon: '📱',
987987
color: '#3776AB',
988-
imgURL:
989-
'https://raw.githubusercontent.com/devicons/devicon/master/icons/objectivec/objectivec-original.svg',
988+
imgURL: 'https://www.vectorlogo.zone/logos/apple_objectivec/apple_objectivec-icon.svg',
990989
primaryDomain: 'mobile',
991990
performanceNeeds: 'important',
992991
ecosystemMaturity: 'legacy',
@@ -1800,7 +1799,7 @@ export const languages: Language[] = [
18001799
mbti: 'INTP',
18011800
icon: '🧩',
18021801
color: '#3776AB',
1803-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/7/73/SWI_Prolog_logo.png',
1802+
imgURL: 'https://www.swi-prolog.org/icons/vector/swipl-logo.svg',
18041803
primaryDomain: 'academic',
18051804
performanceNeeds: 'flexible',
18061805
ecosystemMaturity: 'mature',
@@ -1846,7 +1845,7 @@ export const languages: Language[] = [
18461845
mbti: 'INTP',
18471846
icon: '🎯',
18481847
color: '#3776AB',
1849-
imgURL: 'https://cdnlogo.com/logos/l/21/lisp.svg',
1848+
imgURL: 'https://www.vectorlogo.zone/logos/lisp-lang/lisp-lang-icon.svg',
18501849
primaryDomain: 'academic',
18511850
performanceNeeds: 'flexible',
18521851
ecosystemMaturity: 'mature',
@@ -1939,7 +1938,7 @@ export const languages: Language[] = [
19391938
mbti: 'ESFP',
19401939
icon: '🐱',
19411940
color: '#3776AB',
1942-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/7/75/Scratch_logo.svg',
1941+
imgURL: 'https://static.miraheze.org/programming101wiki/8/89/Scratch_logo.svg',
19431942
primaryDomain: 'academic',
19441943
performanceNeeds: 'flexible',
19451944
ecosystemMaturity: 'modern',
@@ -2031,7 +2030,8 @@ export const languages: Language[] = [
20312030
mbti: 'INTJ',
20322031
icon: '🐫',
20332032
color: '#3776AB',
2034-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/6/6f/OCaml_logo.svg',
2033+
imgURL:
2034+
'https://raw.githubusercontent.com/devicons/devicon/master/icons/ocaml/ocaml-original.svg',
20352035
primaryDomain: 'systems',
20362036
performanceNeeds: 'important',
20372037
ecosystemMaturity: 'mature',
@@ -2158,7 +2158,7 @@ export const languages: Language[] = [
21582158
mbti: 'ISTP',
21592159
icon: '📝',
21602160
color: '#3776AB',
2161-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/9/93/AWK_Logo.svg',
2161+
imgURL: 'https://raw.githubusercontent.com/devicons/devicon/master/icons/awk/awk-original.svg',
21622162
primaryDomain: 'scripting',
21632163
performanceNeeds: 'moderate',
21642164
ecosystemMaturity: 'mature',
@@ -2249,7 +2249,7 @@ export const languages: Language[] = [
22492249
mbti: 'ENTP',
22502250
icon: '🔧',
22512251
color: '#3776AB',
2252-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/8/85/Tcl-powered.svg',
2252+
imgURL: 'https://www.vectorlogo.zone/logos/tcl-lang/tcl-lang-icon.svg',
22532253
primaryDomain: 'scripting',
22542254
performanceNeeds: 'flexible',
22552255
ecosystemMaturity: 'mature',
@@ -2389,7 +2389,7 @@ export const languages: Language[] = [
23892389
mbti: 'INFP',
23902390
icon: '💎',
23912391
color: '#3776AB',
2392-
imgURL: 'https://commons.wikimedia.org/wiki/Special:FilePath/Crystal_language_logo.svg',
2392+
imgURL: 'https://raw.githubusercontent.com/crystal-lang/crystal/master/assets/crystal-logo.svg',
23932393
primaryDomain: 'web_backend',
23942394
performanceNeeds: 'important',
23952395
ecosystemMaturity: 'modern',
@@ -2482,7 +2482,7 @@ export const languages: Language[] = [
24822482
mbti: 'ENFJ',
24832483
icon: '🚀',
24842484
color: '#3776AB',
2485-
imgURL: 'https://raw.githubusercontent.com/vlang/v/master/doc/docs/images/v-logo.png',
2485+
imgURL: 'https://raw.githubusercontent.com/vlang/logo/master/v-logo.png',
24862486
primaryDomain: 'systems',
24872487
performanceNeeds: 'important',
24882488
ecosystemMaturity: 'bleeding_edge',
@@ -2943,6 +2943,7 @@ export const languages: Language[] = [
29432943
mbti: 'ISTP',
29442944
icon: '🚀',
29452945
color: '#3776AB',
2946+
imgURL: 'https://cdn.jsdelivr.net/npm/simple-icons@v11/icons/nvidia.svg',
29462947
primaryDomain: 'systems',
29472948
performanceNeeds: 'critical',
29482949
ecosystemMaturity: 'mature',
@@ -2989,6 +2990,7 @@ export const languages: Language[] = [
29892990
mbti: 'INTP',
29902991
icon: '🌐',
29912992
color: '#3776AB',
2993+
imgURL: 'https://cdn.jsdelivr.net/gh/devicons/devicon/icons/opencl/opencl-original.svg',
29922994
primaryDomain: 'systems',
29932995
performanceNeeds: 'critical',
29942996
ecosystemMaturity: 'mature',
@@ -3035,6 +3037,7 @@ export const languages: Language[] = [
30353037
mbti: 'ISTP',
30363038
icon: '🎨',
30373039
color: '#3776AB',
3040+
imgURL: 'https://cdn.jsdelivr.net/gh/devicons/devicon/icons/opengl/opengl-original.svg',
30383041
primaryDomain: 'systems',
30393042
performanceNeeds: 'critical',
30403043
ecosystemMaturity: 'mature',
@@ -3220,7 +3223,7 @@ export const languages: Language[] = [
32203223
icon: '🎬',
32213224
color: '#3776AB',
32223225
imgURL:
3223-
'https://upload.wikimedia.org/wikipedia/commons/5/56/Adobe_Flash_Professional_CS6_icon.svg',
3226+
'https://raw.githubusercontent.com/devicons/devicon/master/icons/actionscript/actionscript-original.svg',
32243227
primaryDomain: 'web_frontend',
32253228
performanceNeeds: 'moderate',
32263229
ecosystemMaturity: 'legacy',
@@ -3267,6 +3270,7 @@ export const languages: Language[] = [
32673270
mbti: 'ISFJ',
32683271
icon: '⚡',
32693272
color: '#3776AB',
3273+
imgURL: 'https://cdn.jsdelivr.net/npm/simple-icons@v11/icons/autohotkey.svg',
32703274
primaryDomain: 'scripting',
32713275
performanceNeeds: 'moderate',
32723276
ecosystemMaturity: 'mature',
@@ -3359,7 +3363,8 @@ export const languages: Language[] = [
33593363
mbti: 'ENFP',
33603364
icon: '☕',
33613365
color: '#3776AB',
3362-
imgURL: 'https://upload.wikimedia.org/wikipedia/commons/4/4c/CoffeeScript-logo.png',
3366+
imgURL:
3367+
'https://raw.githubusercontent.com/devicons/devicon/master/icons/coffeescript/coffeescript-original.svg',
33633368
primaryDomain: 'web_frontend',
33643369
performanceNeeds: 'moderate',
33653370
ecosystemMaturity: 'mature',

0 commit comments

Comments
 (0)