def block(l,n,m):
    for i in range(n):
        for j in range(m):
            if l[i][j]=='B':
                nei = [
                    (max(i-1,0),j),
                    (min(i+1,n-1),j),
                    (i,(max(j-1,0))),
                    (i,min(j+1,m-1))
                    ]
                for nnn in nei:
                    if l[nnn[0]][nnn[1]]=='G':
                        return False
                    elif l[nnn[0]][nnn[1]]=='B':
                        continue
                    else:
                        l[nnn[0]][nnn[1]]='#'
    return True

def findpath(l,xxx,n,m,i,j):
    if l[i][j]=='G': l[i][j]='.'
    xxx[i][j] = 1
    if i==n-1 and j==m-1:
        return True
    
    nei = [
        (max(i-1,0),j),
        (min(i+1,n-1),j),
        (i,(max(j-1,0))),
        (i,min(j+1,m-1))
        ]
    end = False

    for nnn in nei:
        if (l[nnn[0]][nnn[1]] in ['.','G']) and xxx[nnn[0]][nnn[1]]==0: 
            end = findpath(l,xxx,n,m,nnn[0],nnn[1])
            if end: break
    return end

def solve(l,n,m):
    for i in range(n):
        for j in range(m):
            if l[i][j]=='G':
                xxx=[[0 for _ in range(m)] for _ in range(n)]
                xxx[i][j]=1
                if not findpath(l,xxx,n,m,i,j):
                    return False
    return True

def fill(l,xx,n,m,i,j):
    nei = [
        (max(i-1,0),j),
        (min(i+1,n-1),j),
        (i,(max(j-1,0))),
        (i,min(j+1,m-1))
        ]
    for nnn in nei:
        if (l[nnn[0]][nnn[1]] in ['.','G']) and xx[nnn[0]][nnn[1]]==0: 
            xx[nnn[0]][nnn[1]]=1
            l[nnn[0]][nnn[1]]='.'
            fill(l,xx,n,m,nnn[0],nnn[1])
    

for _ in range(int(input())):
    n,m=map(int,input().split())
    l = []
    for _ in range(n):
        l.append([i for i in input()])
    
    if not block(l,n,m):
        print('No')
        continue
    #print('Yes' if solve(l,n,m) else 'No')
    
    if (l[n-1][m-1]=='#'): 
        end=False
        for i in range(n):
            for j in range(m):
                if l[i][j]=='G':
                    end=True
                    break
            if end:
                break
        print('No' if end else 'Yes')
        continue
    xx=[[0 for _ in range(m)] for _ in range(n)]
    fill(l,xx,n,m,n-1,m-1)
    
    end=False
    for i in range(n):
        for j in range(m):
            if l[i][j]=='G':
                end=True
                break
        if end:
            break
    print('No' if end else 'Yes')