from collections import Counter
from collections import defaultdict
from collections import deque
import math
import heapq
import sys
import io, os
input = sys.stdin.readline
#input = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
from  bisect import *
rs = lambda: input().strip()
ri = lambda: int(input())
rl = lambda: list(map(int, input().split()))
rls= lambda: list(map(str, input().split()))

def check(i,j):
    if(i>=0 and i<r and j>=0 and j<c):
        return 1
    return 0
x=[1,0,-1,0]
y=[0,1,0,-1]


def dfs(i,j):
    if(check(i,j)==0 or a[i][j]=='#'):
        return -1
    if(i==n-1 and j==m-1):
        return 1
    for p in range(0,4):
       # print("chalu")
        x1=i+x[p]
        y1=j+y[p]
        print("scene",x1,y1)
        mx=-1
        if(check(x1,y1) and vis[x1][y1]==0):
            vis[x1][y1]=1
            ans=dfs(x1,y1)
            print(x1,y1,ans)
            if(ans==1):
                if(a[i][j]=='B'):
                    if(a[x1][y1]=='.'):
                        a[x1][y1]='#'
                        #print(i,j,x1,y1,"kkkk")
            else:
                vis[x1][y1]=0
            mx=max(mx,ans)
    return mx



t=int(input())
for _ in range(0,t):
    r,c=rl()
    n=r
    m=c
    a=[]
    store=[]
    vis = []
    for k in range(0, r):
        vis.append([0] * c)
    # for i in range(0,n):
    #     store.append([-1]*m)
    for i in range(0,r):
        a.append(list(input().strip()))
    #print(a)
    #print("xxx")
    # for i in range(0,r):
    #     for j in range(0,c):
    #       #  print(i,j,"lll")
    #         if(a[i][j]=='B' and vis[i][j]==0):
    #           #  print(i,j,"lklkldf")
    #             vis[i][j]=1
    #             dfs(i,j)
  #  print(a)
    c1=0
    for i in range(0, r):
        for j in range(0, c):
            if(a[i][j]=="B"):
      #          print("yyyyyyy")
                for p in range(0,4):
                    x1 = i + x[p]
                    y1 = j + y[p]
       #             print(x1,y1)
                    if(check(x1,y1)==1 and a[x1][y1]=='.'):
                        a[x1][y1]="#"
     #                   print("kkk")
            if(a[i][j]=='G'):
                c1=c1+1
    #print(a,c1)
    if(a[n-1][m-1]=='#'):
        if(c1==0):
            print("Yes")
        else:
            print("No")
    else:
     #   print("fjjfjf")
        l=[]
        q=deque(l)
        g=0
        q.append([n-1,m-1,'.'])
        vis[n-1][m-1]=1
        while(len(q)!=0):
            i,j,ele=q.popleft()
            if(ele=='G'):
                g=g+1
            for p in range(0, 4):
                x1 = i + x[p]
                y1 = j + y[p]
                if (check(x1, y1) == 1 and a[x1][y1] != "#" and vis[x1][y1]==0):
                    vis[x1][y1] =1
                    q.append([x1,y1,a[x1][y1]])
        if(g==c1):
            print("Yes")
        else:
            print("No")







